> For the complete documentation index, see [llms.txt](https://gitbook.fantasticmao.cn/tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.fantasticmao.cn/tech/c-and-unix/unix-like/niao-ge-de-linux-si-fang-cai-bi-ji-mu-lu-pei-zhi.md).

# 《鳥哥的 Linux 私房菜》笔记 - 目录配置

## 目录配置的依据 FHS

FHS（Filesystem Hierarchy Standard）是独立于软件开发商、操作系统开发者、操作系统维护者的一套标准，可以让操作系统的用户可以了解到已安装的软件通常放置于哪个目录下。

## 根目录的意义与内容

根目录是整个系统中最重要的一个目录，因为不但所有的目录都是由根目录衍生出来的，同时根目录也与开机/还原/系统修复等动作有关。

FHS 标准建议：根目录所在分隔槽应该越小越好，且应用程序所安裝的软件最好不要与根目录放在同一個分隔槽内，保持根目录越小越好。

| 目录          | 放置内容                                                                                                                                                                                                                    |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|             | **第一部分：FHS 要求必须存在的目录**                                                                                                                                                                                                  |
| /bin        | 放置单人维护模式下还能被操纵的命令。在 /bin 目录下的命令可以被 root 与一般账号使用，例如：`cat`、`chmod`、`chown`、`date`、`mv`、`mkdir`、`cp`、`bash` 等等常用的命令。                                                                                                       |
| /boot       | 放置开机时会使用到的文件。                                                                                                                                                                                                           |
| /dev        | 在 Linux 中，任何装置与外围设备都是以文件的形式被放置于这个目录中。只要通过存取这个目录底下的某个文件，就等于存取某个外围设备了。比较重要的文件有：/dev/null、/dev/zero、/dev/loop\*，/dev/sd\* 等等。                                                                                              |
| /etc        | 放置系统的主要设置文件，例如用户的账号密码，各种服务的配置文件等等。比较重要的文件有：/etc/modprobe.d、/etc/passwd、/etc/fstab、/etc/issue 等等。                                                                                                                        |
| /lib        | 放置开机时会用到的函数库，以及在 /bin 和 /sbin 目录下会被调用的函数库。                                                                                                                                                                              |
| /media      | 放置可移除的装置，包括光碟、DVD 等等都是在这个目录下挂载。常见的文件有：/media/floppy、/etc/cdrom 等等。                                                                                                                                                      |
| /mnt        | 放置用于挂载某些额外的装置                                                                                                                                                                                                           |
| /opt        | 放置第三方软件的目录。                                                                                                                                                                                                             |
| /run        | 放置系统开机后所产生的各项资讯。                                                                                                                                                                                                        |
| /sbin       | s 是 super 的缩写，放置开机时所需要的命令，包括了开机、修复、还原系统所需要的系统命令。                                                                                                                                                                        |
| /srv        | srv 是 service 的缩写，放置一些基于网络的服务在运行时所需要的资料目录。常见的网络服务例如 WWW、FTP 等等。                                                                                                                                                         |
| /tmp        | tmp 是 temporary 的缩写，放置正在运行的程序所创建的临时文档。重要的资料不能放置于这个目录，因为 FHS 标准甚至建议操作系统在开机时要清除 /tmp 目录下的文件。                                                                                                                              |
| /usr        | usr 是 unix software resource 的缩写，放置 Unix 操作系统软件资源的目录。                                                                                                                                                                   |
| /var        | var 是 variable 的缩写，放置经常变动的文件，包括缓存（cache）、登陆文件（log file）以及某些软件运行时所产生的文件，包括程序文件（lock file、run file）或者 MySQL 资料库的文件等等。                                                                                                     |
|             | **第二部分：FHS 建议可以存在的目录**                                                                                                                                                                                                  |
| /home       | 系统预设的用户家目录，`~` 代表当前使用者的家目录，`~${foo}` 代表用户 foo 的家目录。                                                                                                                                                                     |
| /lib\<qual> | 放置与 /lib 不同格式的二进制函数库，例如支持 64 位的 /lib64 函数库等等。                                                                                                                                                                           |
| /root       | root 用户的家目录。                                                                                                                                                                                                            |
|             | **FHS 未定义的目录**                                                                                                                                                                                                          |
| /lost+found | 这个目录是使用标准的 ext2/ext3/ext4 文件系统格式才会产生的一个目录，用于在文件系统发生错误时，将一些丢失的片段放置到这个目录下啊。如果使用的是 xfs 文件系统的话，就不会存在这个目录。                                                                                                                   |
| /proc       | proc 是 processes 的缩写，这个目录是一个虚拟文件系统（virtual file system），目录底下的资料都是在内存当中，例如系统内核、进程资料、周边装置的状态以及网络状态等等。因为这个目录底下的资料都是在内存当中的，所以它本身并不占用任何硬盘空间。比较重要的文件有：/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/\* 等等。 |
| /sys        | 这个目录和 /proc 类似，也是一个虚拟的文件系统，也是放置内核和系统硬件相关的资料。                                                                                                                                                                            |

## 参考资料

* [《鸟哥的 Linux 私房菜》- Linux 目录配置](https://linux.vbird.org/linux_basic/centos7/0210filepermission.php#dir)
