Creating directories
Let's now create some structure in our LFS file system. Let's create
a directory tree. Issuing the following commands will create a more or less
standard tree:
mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
mkdir -p /{root,sbin,tmp,usr/local,var,opt}
for dirname in /usr /usr/local
do
mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} $dirname
mkdir $dirname/share/{dict,doc,info,locale,man}
mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
mkdir /usr/lib/locale
mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{tmp,opt,cache,lib/misc,local}
mkdir /opt/{bin,doc,include,info}
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
ln -s ../var/tmp /usr
Directories are, by default, created with permission mode 755, but this
isn't desirable for all directories. We will make two changes: one to the home
directory of root, and another to the directories for temporary files.
chmod 0750 /root
chmod 1777 /tmp /var/tmp
The first mode change ensures that not just anybody can enter the
/root directory -- the same
as a normal user would do with his or her home directory.
The second mode change makes sure that any user can write to the
/tmp and
/var/tmp directories, but
cannot remove other users' files from them. The latter is prohibited
by the so-called "sticky bit" -- the highest bit in the 1777 bit mask.
FHS compliance note
We have based our directory tree on the FHS standard (available at
). Besides the above created
tree this standard stipulates the existence of
/usr/local/games and
/usr/share/games, but we don't
much like these for a base system. However, feel free to make your system
FHS-compliant. As to the structure of the
/usr/local/share subdirectory, the FHS
isn't precise, so we created here the directories that we think are needed.