概述
在篇中,学习文件系统层级标准 (FHS)。学习:
- 确定将文件放在 FHS 下的位置
- 查找 Linux 系统上的文件和命令
- 查找 FHS 中定义的其他重要文件和目录,并理解它们的用途
文件系统层级标准
通过在所有 Linux 发行版中都将文件放在同一个一般位置,FHS 简化了与发行版独立的软件开发。FHS 还可以用在 Linux Standard Base 中(参见参考资料)。FHS 允许用户和软件预测安装的文件和目录的位置。符合 FHS 的文件系统假设操作系统支持大多数 UNIX 文件系统中包含的基本安全功能。
两个独立的 FHS 类别
FHS 的核心是两种独立的文件特征:
-
可共享和不可共享
- 可共享文件可放在一个系统上并在另一个系统上使用,而不可共享文件必须位于使用它们的系统上。 静态和可变
- 静态文件仅通过系统管理员干预进行更改,比如安装或升级一个包,它们包括文档、库和二进制文件。可变文件是其他所有文件,比如日志、假脱机文件、数据库和用户数据,它们可由用户和系统进程更改。
这些不同之处使得具有不同的特征集的文件可以存储在不同的文件系统上。表 1是一个来自 FHS 文档的示例,展示了一种符合 FHS 的布局。
表 1. FHS 示例
可共享 | 不可共享 | |
---|---|---|
静态 | /usr /opt |
/etc /boot |
可变 | /var/mail /var/spool/news |
/var/run /var/lock |
Linux 系统通常包含数十万个文件。我最近安装的一个 64 位 Fedora 22 系统仅在 /usr 分层结构中就有 170,000 多个文件。
[root@atticf22 ~]# find /usr -type f | wc -l 174182
我的其他大部分安装都拥有超过 100,000 个文件,通常拥有 200,000 个或更多的文件。接下来的几节将介绍帮助您在如此浩瀚的数据海洋中查找文件(特别是程序)的工具。
您的可执行文件的路径
如果您使用过多个 Linux 系统,您可能已经注意到,在您以 root 身份进行登录时,能够执行一些作为普通用户无法执行的命令。一些命令可由用户执行,但不能由 root 执行。当您在命令行上运行程序时,bash(或其他)shell 会在一个目录列表中搜索,以找到您请求的程序。该目录列表在 PATH 环境变量中指定。在旧版的系统上,root 用户的路径通常包含 /sbin,而非 root 用户的路径不包含它。清单 1展示了来自 3 个不同发行版的用户和 root 路径示例。
清单 1. 一些 PATH 示例
[ian@attic4-cent ~]$ # CentOS 6 [ian@attic4-cent ~]$ echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ian/bin [ian@attic4-cent ~]$ su - Password: [root@attic4-cent ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [ian@atticf22 ~]$ # echo Fedora 22 [ian@atticf22 ~]$ echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ian/.local/bin:/home/ian/bin [ian@atticf22 ~]$ su - Password: [root@atticf22 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@atticf22 ~]# ls -l /sbin lrwxrwxrwx. 1 root root 8 Aug 16 2014 /sbin -> usr/sbin ian