<< Back to shouce.jb51.net

创建目录

现在我们在LFS分区中着手创建目录结构,用下列命令能创建一个大体上标准的目录树:

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/{doc,info,locale,man}
    mkdir $dirname/share/{misc,terminfo,zoneinfo}
    mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
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}}

在缺省情况下创建的目录的访问权限为755,但有些目录的访问权限不能设置成这样。我们将做两个修改:一个是root的主目录,另一个是临时文件放置的目录。命令如下:

chmod 0750 /root
chmod 1777 /tmp /var/tmp

第一个命令确保不是所有的用户可以进入/root目录(其他用户主目录有同样的访问权限)。第二个修改是对$LFS目录下的所有tmp目录的访问权限设置为1777,以使所有用户可以写入数据到/tmp/var/tmp目录,但是不能删除其他用户创建的文件,不能删除其他用户的目录是由sticky位,也就是1777的1来设定的)。

FHS 兼容性注意事项

我们的目录树是以FHS标准(可以在http://www.pathname.com/fhs/得到)。除了上面创建的目录外,FHS标准还规定了必须有 /usr/local/games/usr/share/games 两个目录,但是作为一个基本的系统,我们并不需要这些。如果你要完全的遵守FHS标准的话,就自己建立这两个目录。至于 /usr/local/share 目录下的子目录,FHS标准规定得并不严格,所以我们就创建了(在我们看来)需要的子目录。