在 Linux/Unix-like
系统中,文件权限是保障系统安全和实现多用户协作的基础。每个文件或目录都有一套权限规则,规定了谁可以对其进行何种操作。本文旨在简洁地解释这套权限系统的内在逻辑。
我们通常使用 ls -l
命令查看文件权限,会看到类似 -rwxr-xr--
这样的字符串。这套系统由三个核心部分组成:权限类型、用户身份和它们的数字表示法。
1. 基础概念:权限三要素 (r, w, x)
这三个字母分别代表三种基本权限:
- r (Read): 读权限
- w (Write): 写权限
- x (Execute): 执行权限
它们的含义根据作用对象的不同而有所区别:
权限 | 对于文件 (File) | 对于目录 (Directory) |
---|---|---|
r | 可以读取文件的内容 (e.g., cat , less ) |
可以列出目录中的文件和子目录列表 (e.g., ls ) |
w | 可以修改文件的内容 (e.g., vim , echo > ) |
可以在目录中创建、删除、重命名文件 (e.g., touch , rm ) |
x | 可以将文件作为程序执行 (e.g., ./myscript.sh ) |
可以进入该目录 (e.g., cd ) |
特别注意:对目录的 x
权限是关键。如果没有 x
权限,即使有 r
权限,也无法 cd
进去,也无法查看其下文件的详细信息。
2. 身份识别:三类用户 (u, g, o)
Linux将用户分为三类,以便进行精细的权限控制:
- u (User/Owner): 文件所有者,即创建文件的用户。
- g (Group): 文件所属的用户组。一个组可以包含多个用户,方便进行协作。
- o (Others): 其他人,既不是文件所有者,也不在文件所属组内的所有其他用户。
3. 数字表示法:内在逻辑
为了方便设置权限(例如使用 chmod
命令),系统引入了数字表示法。其逻辑非常简单,源于二进制思想:
- r = 4 (二进制
100
) - w = 2 (二进制
010
) - x = 1 (二进制
001
)
核心逻辑:将所需权限的数字相加,即可得到该用户类别的总权限值。
rwx
= 4 + 2 + 1 = 7rw-
= 4 + 2 + 0 = 6r-x
= 4 + 0 + 1 = 5r--
= 4 + 0 + 0 = 4
一个三位数的权限码(如 755
)正好分别对应 u、g、o 三类用户的权限。
示例:解析 755
– 第1位 7
: 对应 User -> 4+2+1
-> rwx
– 第2位 5
: 对应 Group -> 4+1
-> r-x
– 第3位 5
: 对应 Others -> 4+1
-> r-x
所以,755
等同于 rwxr-xr-x
。
4. 常见权限组合解析
下表列出了一些常见的权限组合及其典型用途。
权限码 | 符号表示 | 用户(u) | 组(g) | 其他(o) | 常见用途 |
---|---|---|---|---|---|
777 | rwxrwxrwx |
rwx |
rwx |
rwx |
极不安全。任何人都有完全权限。通常只用于临时目录(如 /tmp )或特定场景。 |
755 | rwxr-xr-x |
rwx |
r-x |
r-x |
标准权限。对于可执行文件和目录。所有者可读写执行,其他人可进入和执行。 |
666 | rw-rw-rw- |
rw- |
rw- |
rw- |
所有人可读写,但不可执行。适用于多用户共享写入的文件,但有安全风险。 |
644 | rw-r--r-- |
rw- |
r-- |
r-- |
标准权限。对于普通文本文件。所有者可读写,其他人只能读取。 |
660 | rw-rw---- |
rw- |
rw- |
--- |
文件所有者和同组用户可读写,其他人无任何权限。适用于项目组内部协作的文件。 |
600 | rw------- |
rw- |
--- |
--- |
私密文件。只有文件所有者能读写。例如SSH私钥 ~/.ssh/id_rsa 、bash历史记录等。 |
总结
Linux
文件权限的核心就是回答两个问题:“谁 (u, g, o)” 和 “能做什么 (r, w, x)”。通过将 rwx
映射为 421
的数字,我们可以用一个简单的三位数(如 755
)快速、精确地描述和设置权限,这是 Linux
系统设计中优雅与效率的体现。理解这套逻辑是每一位 Linux
用户的必备技能。
本文由 Gemini 2.5 Pro Preview 05-06
生成原稿加整理。