Linux 基础 - 目录配置
参考资料: http://linux.vbird.org/linux_basic/0210filepermission.php#dir
本文大纲:
Linux 目录配置
Linux 采用 FHS(Filesystem Hierarchy Standard) 标准作为配置目录结构的参考依据,目前,大多数 Linux 的发行版本都遵循了这套标准。FHS 将目录定义为四种交互形态,表格如下:
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr(软件所在位置) | /etc(配置目录) |
/opt(第三方协议软件) | /boot(开机与核心档) | |
可变的(variable) | /var/mail(用户邮件信箱) | /var/run(程序相关) |
/var/spool/news(新闻群组) | /var/lock(程序相关) |
- 可分享的: 可分享给其他系统挂载使用的目录,包括可执行程序与邮件等
- 不可分享的: 仅与本地系统或配置有关的,分享给其他主机将无法直接使用
- 不变的: 例如函数库,文件说明系统管理员管理的主机服务配置文件等
- 可变的: 经常需要改变的资料,如登录档案,用户收取的新闻等。
事实上, FHS 仅定义以下三层目录的用途:
- /(root, 根目录): 与开机系统有关
- /usr(unix software resource): 与软件安装/执行有关
- /var(variable): 与系统运作过程有关
从用户角度看,root 指系统的超级管理员身份,从目录角度看,root 指系统的根目录
根目录
所有的目录都是从根目录衍生出来。根目录与开机/还原/系统修复等动作有关,FHS 建议根目录不要放在非常大的分区内,且应用程序安装的软件最好也不要与根目录放在同一个分区内,内容越多的分区出错的几率也越高。以下是 FHS 定义的次目录:
必须要存在的目录
档案 | 描述 |
---|---|
/bin | 系统有多个放置可执行程序的目录,但 /bin 比较特殊,该目录放置的是「在单人维护模式下仍然能够执行的程序」,该目录的指令可以被 root 与一般用户执行,主要有 cat, chmod, chown, date, mv, mkdir, cp, bash 等常用指令 |
/boot | 主要放置开机会使用的档案,包括 Linux 核心档案及开机选单与开机所需配置等 |
/dev | 在 Linux 系统中,任何装置与外设都是以文件形态存在于这个目录中,存取该目录下的文件等同于存取某个设备,比较重要的有 /dev/null, /dev/zero, /dev/tty, /dev/loop, /dev/sd 等等 |
/etc | 系统主要的⎡配置文件⎦几乎都放在该目录下,FHS 不建议放置任何可执行文件(binary)在这个目录下,例如 /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue。同时,FHS 还建议:
|
/lib | 系统的函数库非常多,「/lib 放置的是开机会用到以及在 /bin 或 /sbin 下的指令会调用的函数库」。另外,FHS 要求在该目录必须要存在:
|
/media | 放置可移除的装置,包括软碟,光碟,DVD 等都暂时挂载于此。常见的有 /media/floppy, /media/cdrom 等 |
/mnt | 暂时挂载额外装置的目录,早些时候该目录与 /media 用途相同,在有了 /media 之后,该目录就主要是暂时挂载用途了 |
/opt | 第三方协议软件的目录(即非 Linux 发行版本自带的软件程序),早些时候,这些软件多数放在 /usr/local 下 |
/run | 早期的 FHS 规定系统开机后所产生的各项资讯应该要放置到 /var/run 目录下,新版的 FHS 则规范到 /run 底下。由于 /run 可以使用内存来模拟,因此具有更高的性能 |
/sbin | Linux 系统有非常多的指令用来设定系统环境,这些指令只有 root 才能使用,其他用户只能使用查询功能,/sbin 下包含了开机,修复,还原系统所需要的指令。某些服务器软件程序,一般放置在 /usr/sbin 中,而本机自行安装的软件产生的系统执行文件(system binary),则放置在 /usr/local/sbin 中了,常见的指令包括: fdisk, fsck, ifconfig, mkfs 等等 |
/srv | srv 可视为「service」的缩写,某些网络服务启动后,需要取用的资料目录,例如 www,ftp 服务,如果这些服务不需要公开提供给互联网,那么建议放置到 /var/lib 下 |
/tmp | 一般用户或正在执行的程序暂时放置档案的地方,任何用户都可以存取该目录,所以需要定期清理,FHS 建议在开机时应该要将 /tmp 下的资料都删除 |
/usr | 见后文 |
/var | 见后文 |
FHS 建议可以存在的目录:
档案 | 描述 |
---|---|
/home | 系统预设的用户 Home 目录,新用户的 Home 目录会默认创建在该目录下,其代号字符为:
|
/lib/qual | 存放与 /lib 不同格式的二进制函数库,例如 64 位 /lib64 函数库等 |
/root | 系统管理员 root 的 Home 目录,如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有 root 的 Home 目录,所以通常 root 用户的 Home 目录与根目录放置在同一个分区中 |
/usr 的意义与内容
首先 usr
是 Unix Software Resource 的缩写,表示「操作系统软件资源」所放置的目录,而不是 User 的缩写。FHS 建议所有软件开发者应该将他们的资料分别合理的放置到该目录下的次目录中,而不要自行创建独立的目录。Linux 发行版本的所有内置软件都会放到 /usr 下,系统安装完毕后该目录会占用最多的硬盘容量,/usr 次目录的建议有:
FHS 要求必须要存在的目录
档案 | 描述 |
---|---|
/usr/bin/ | 一般用户能够使用的指令都放在这里,目前 CentOS 7 已经将全部的用户指令放置于此,而使用链接将 /bin 链接至此,意即,/usr/bin 与 /bin 是一摸一样了。另外,FHS 要求在此目录下不应该有子目录。 |
/usr/lib/ | 基本与 /lib 相同,/lib 就是链接到此目录中的 |
/usr/local/ | 系统管理员在本机自行下载安装的软件建议安装到此目录 |
/usr/sbin/ | 非系统正常运行所需要的系统指令,目前 /sbin 链接到此目录中 |
/usr/share/ | 主要放置只读架构的资料档案,包括共享文件 |
FHS 建议可以存在的目录
档案 | 描述 |
---|---|
/usr/games/ | 与游戏相关的资料目录 |
/usr/include | |
/usr/libexec | 某些不会被一般用户常用的执行文件或脚本会放置在该目录 |
/usr/lib |
与 /lib/ |
/usr/src | 源代码放置目录 |
/var 的意义与内容
/var 会在系统运行过程中渐渐产生内容,包括缓存,日志及某些软件运行所产生的数据,例如 MySQL 的数据文件等,常见的次目录有:
FHS 要求必须要存在的目录
档案 | 描述 |
---|---|
/var/cache/ | 应用程序运行过程中产生的暂存数据 |
/var/lib/ | 应用程序运行过程中,需要使用的资料档案放置的目录,此目录下每个软件应该有自己的目录,举例来说,MySQL 的资料库应该放置到 /var/lib/mysql。 |
/var/lock/ | 用于对某些装置或档案资源进行排他加锁,目前此目录已移动到 /run/lock |
/var/log/ | 至关重要,放置了程序运行所产生的日志文件 |
/var/mail/ | 放置个人电子邮件的目录,已移动到 /var/spool/mail/ 目录中 |
/var/run/ | 某些程序或服务启动后,会将他们的 PID 放置在这个目录下。与 /run 相同,链接到 /run |
/var/spool/ | 该目录通常放置队列数据,crontab 文件就放置在 /var/spool/cron/ 目录中 |
以 CentOS 7 为例,比较其目录结构与 FHS 规定的内容的差异:
- /bin –> /usr/bin
- /sbin –> /usr/sbin
- /lib –> /usr/lib
- /lib64 –> /usr/lib64
- /var/lock –> /run/lock
- /var/run –> /run
主要是将许多原本在根目录下 /
的资料移到了 /usr
中,然后设置了链接