
1. Linux文件系统层级标准 (FHS)
Linux遵循文件系统层级标准(Filesystem Hierarchy Standard, FHS),它定义了主要目录的用途,确保了不同Linux发行版之间的一致性。
| 目录 | 全称/别名 | 核心作用 |
|---|---|---|
/ | root | 根目录,文件系统的顶级起点。 |
/root | - | 超级用户(root)的主目录。 |
/home | - | 普通用户的个人主目录,每个用户在此目录下拥有自己的子目录。 |
/bin | Binaries | 存放所有用户(包括普通用户)都可使用的基本可执行命令(如 ls, cp)。 |
/sbin | System Binaries | 存放只有系统管理员(root)才能使用的系统管理命令(如 ifconfig, reboot)。 |
/lib, /lib64 | Libraries | 存放系统和应用程序所需的共享库文件。 |
/usr | Unix System Resources | 存放用户安装的应用程序、文档和库文件,是系统中最大的目录之一。 |
/etc | Etcetera | 存放系统及应用程序的全局配置文件。 |
/var | Variable | 存放经常变化的文件,如日志文件 (/var/log)、缓存等。 |
/tmp | Temporary | 存放临时文件,系统重启后通常会清空此目录。 |
/dev | Devices | 存放硬件设备对应的设备文件,Linux将硬件抽象为文件进行访问。 |
/mnt | Mount | 临时手动挂载文件系统的挂载点。 |
/media | - | 可移动介质(如U盘、光驱)的自动挂载点。 |
/opt | Optional | 用于存放第三方可选的、大型的软件包。 |
/boot | - | 存放Linux内核及系统启动过程中所需的文件。 |
/proc | Processes | 一个虚拟文件系统,存放系统内核和进程的实时信息,内容在内存中。 |
2. 文件路径 (Path)
路径是用于定位文件系统中文件或目录的字符串。
-
绝对路径 (Absolute Path)
- 从根目录
/开始的完整路径。 - 示例:
/home/user/documents/report.txt
- 从根目录
-
相对路径 (Relative Path)
- 从当前工作目录开始的路径,不以
/开头。 - 示例: 如果当前在
/home/user,则documents/report.txt指向与上面相同的文件。
- 从当前工作目录开始的路径,不以
2.1 特殊路径字符
| 字符 | 含义 | 示例 |
|---|---|---|
. | 表示当前目录 (Current Directory)。 | ./script.sh |
.. | 表示上一级目录(父目录, Parent Directory)。 | cd ../ |
~ | 表示当前登录用户的主目录 (Home Directory)。 | cd ~/documents |
/ | 路径分隔符,以及根目录的标识。 | /home/user |
* | 通配符:匹配0个或多个任意字符。 | ls *.txt |
? | 通配符:匹配正好1个任意字符。 | ls file?.log |
注意:路径分隔符在 UNIX/Linux 系统中是正斜杠
/,而在 Windows 系统中是反斜杠\。
3. 文件元信息 (Metadata) 与 ls -l 详解
ls -l 命令可以显示文件的详细元信息,这些信息存储在文件的索引节点 (Inode) 中。
示例输出:
-rwxr-xr-- 1 user staff 4096 Jul 31 10:30 my_script.sh
drwxr-xr-x 2 user staff 4096 Aug 01 12:00 my_folder
下面逐列解析其含义:
3.1 第一列:文件类型与权限
这一列共10个字符,第一个字符表示文件类型,后面九个字符表示文件权限。
- 文件类型:
| 字符 | 类型 | 描述 |
|---|---|---|
- | 普通文件 | (Regular File) 如文本、二进制程序。 |
d | 目录 | (Directory) |
l | 符号链接 | (Symbolic Link) 指向另一个文件或目录。 |
c | 字符设备文件 | (Character Device) 如终端、串口。 |
b | 块设备文件 | (Block Device) 如硬盘、U盘。 |
s | 套接字文件 | (Socket) 用于进程间网络通信。 |
p | 命名管道文件 | (Pipe / FIFO) 用于进程间通信。 |
- 文件权限 (字符表示法): 后面9个字符,每3个为一组,分别代表 所有者 (User)、所属组 (Group) 和 其他用户 (Others) 的权限。
| 权限字符 | 含义 | 对文件的作用 | 对目录的作用 |
|---|---|---|---|
r | 读 (Read) | 可读取文件内容。 | 可读取目录中的文件名列表,通常需要配合 x 才能正常 ls。 |
w | 写 (Write) | 可修改文件内容。 | 可修改目录项,如创建、删除、重命名文件,通常需要配合 x。 |
x | 执行 (Execute) | 可作为程序运行。 | 可进入 (cd) 该目录,或访问目录中的已知文件。 |
- | 无权限 | - | - |
示例: rwxr-xr--
- rwx: 所有者 拥有读、写、执行权限。
- r-x: 所属组 拥有读、执行权限,但没有写权限。
- r--: 其他用户 仅拥有读权限。
文件权限 (数字表示法 - Octal Notation)
这是 chmod 命令常用的权限表示方法。每种权限用一个数字代表:
- r (读) = 4 (二进制 100)
- w (写) = 2 (二进制 010)
- x (执行) = 1 (二进制 001)
一组权限(如 rwx)的数字是其包含权限的数字之和。
| 数字 | 权限组合 (rwx) | 二进制 | 描述 |
|---|---|---|---|
7 | rwx | 111 | 读、写、执行 (4+2+1) |
6 | rw- | 110 | 读、写 (4+2) |
5 | r-x | 101 | 读、执行 (4+1) |
4 | r-- | 100 | 只读 (4) |
3 | -wx | 011 | 写、执行 (2+1) |
2 | -w- | 010 | 只写 (2) |
1 | --x | 001 | 只执行 (1) |
0 | --- | 000 | 无任何权限 |
常用权限组合示例:
chmod 755 my_script.sh7(所有者):rwx5(所属组):r-x5(其他人):r-x- 含义: 脚本所有者可读可写可执行,其他人只能读取和执行。通常用于可执行脚本和程序。
chmod 644 config.txt6(所有者):rw-4(所属组):r--4(其他人):r--- 含义: 文件所有者可读可写,其他人只能读取。通常用于普通文本文件。
chmod 777 temporary_folder- 含义: 所有人都有读、写、执行权限。安全风险高,请谨慎使用!
3.2 其他列的含义
| 列 | 名称 | 描述 |
|---|---|---|
| 2 | 硬链接数 | 指向此文件Inode的硬链接数量。对于目录,是其包含的子目录数量+2(.和..)。 |
| 3 | 所有者 (Owner) | 拥有此文件的用户。 |
| 4 | 所属组 (Group) | 拥有此文件的用户组。 |
| 5 | 文件大小 (Size) | 文件内容的大小,单位是字节(Byte)。 |
| 6-8 | 最后修改时间 | 文件内容最后一次被修改的时间。 |
| 9 | 文件名/目录名 | 文件的名称。如果为符号链接,会显示 link_name -> target_path。 |
4. 文件构成:索引节点 (Inode) 与数据块 (Data Block)
在Linux文件系统中,一个文件由两部分组成:
-
索引节点 (Inode):
- 存储文件的元信息,如:文件类型、权限、所有者、大小、时间戳、硬链接数以及指向数据块的指针。
- 不包含文件名。文件名存储在目录文件的数据块中,与Inode编号对应。
-
数据块 (Data Block):
- 实际存储文件内容的地方。
这种分离设计使得文件可以有多个名字(硬链接),并且可以高效地获取文件属性而无需读取文件内容。
5. 用户账户信息 (/etc/passwd)
该文件存储系统用户的基本信息,每行代表一个用户,字段之间用冒号 (:) 分隔。
格式: username:password:UID:GID:GECOS:home_directory:shell
- 用户名: 登录时使用的名称。
- 密码占位符:
x表示密码被加密并存储在/etc/shadow文件中。 - 用户ID (UID): 用户的唯一数字标识。
0代表root用户,1-999通常为系统用户,1000+为普通用户。 - 组ID (GID): 用户所属主组的ID。
- 用户信息 (GECOS): 用户的描述信息,如全名、电话等。
- 主目录: 用户登录后默认所在的目录路径。
- 登录Shell: 用户登录后启动的命令解释器程序,如
/bin/bash。
发表评论
未登录评论需提供昵称和联系邮箱,提交后默认进入审核。