FHS
Linux 目录配置的依据--FHS(Filesystem Hierarchy Standard)
利用 Linux 来开发产品戒 distributions 的社群/公司个人实在太多了, 如果每个人都用自己的想法来配置档案放置的目彔,那举将可能造成徆多管理上的困扰。所以就有了FHS。
FHS 依据文件系统使用的频繁与否与是否允讲使用者随意更改, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
- 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录
- 不可分享的:自己机器上面运作的装置档案或者是与程序有关的 socket 档案等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了
- 不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机朋务配置文件等等
- 可变动的:经常改变的数据,例如登陆文件、一般用户可自行收受的新闻组等
事实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关
这个 root 在 Linux 里面的意义真的很多~ 如果以『账号』的角度来看,所谓的 root 指的是『系统管理员!』的身份, 如果以『目录』的角度来看,所谓的 root 意是根目录,就是 /
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等操作有关。 由于系统开机时需要特定的开机软件、核心档案、开机所需程序、函式库等等档案数据,若系统出现错误时,根目录也必项要包含有能够修复文件系统的程序才行。所以在 FHS 的要求方面,他希望根目录不要放在非常大的分割槽内, 因为越大的分割槽会放入越多的数据,如此一来根目录所在分割槽就可能会有较多发生错误的机会。
因此 FHS 标准建议:根目录(/)所在分割槽应该越小越好, 而应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成乀后才会持续的进行挂载的行为。那哪些目录不可以与根目录分开呢?有底下这些: 挂载
- /etc:配置文件
- /bin:重要执行档
- /dev:所需要的装置档案
- /lib:执行档所需的函式库与核心所需的模块
- /sbin:重要的系统执行文件
针对 FHS,各家 distributions 的异同
由于 FHS 仅是定义出最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件数据, 因此,在其他次目录层级内,就可以随开发者自行来配置了。举例来说,CentOS 的网络设定数据放在/etc/sysconfig/network-scripts/ 目录下,但是 SuSE 则是将网络放置在 /etc/sysconfig/network/ 目录下,目录名称可是不同的呢!不过只要记住大致的 FHS 标准,差异性其实有限!
文件目录
Linux的文件系统是采用层级式的树状目录结构(是没有像window下的C,D盘之分的)。结构的最上层是根目录/,然后在此目录下再创建其他目录
根目录下面有以下子目录
- /root 主要存放root用户的相关文件,也就是root登陆进去后的默认目录
- /boot 放置开机会使用到的目录,包括 Linux 核心档案以及开机选单与开机所需配置文件等等。 Linux kernel 常用的文件名为:vmlinuz,如果使用的是 grub 这个开机管理程序, 则还会存在/boot/grub/这个目录!(非常重要,破坏之后,系统无法进入)
- /home 主要用来存放普通用户的相关文件。新增一个一般使用者账号时, 默讣的用户家目彔都会到这里来。
- /bin 存放普通命令(常用命令)的目录。可以被 root 和一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash 等等。
- /sbin 用来存放具有一定权限才可以使用的命令
- /lib 系统的函式库非常的多,而/lib 放置的则是在开机时会用到的函式库, 以及在/bin 或/sbin 底下的指令会呼叫的函式库而已。 尤其重要的是/lib/modules/这个目录, 因为该目录会放置核心相关的模块(驱动程序)!
- /mnt 默认用来挂载光驱和软驱的文件夹(也可以放在其他地方)
- /etc 系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、 各种服务的启动文件,环境变量,mysql等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有 root 有权力修改。FHS 建议不要放置可执行文件(binary)在这个目录中。比较重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。
- /dev 在 Linux 系统上,任何装置与接口设备都是以文件的型态存在二这个目录当中的。 你只要透过存取这个目录底下的某个文件,就等于存取某个装置~ 比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等
- media media 是『媒体』的英文,这个/media 底下放置的就是可移除的装置! 包括软盘、光盘、DVD 等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom 等等
- /mnt 如果想要暂时挂载某些额外的装置,一般建议可以放置到这个目录中。 在早时候,这个目录的用途与/media 相同!只是有了/media 之后,这个目录就用来暂时挂载用了