开篇词
我们可以通过查看一个文件的模式位来确定其权限。
模式位结构
文件以及目录的模式位结构:
选项 | 用途 |
---|---|
r | 读权限 |
w | 写权限 |
x | 执行权限 |
目录和文件的权限
我们来看一下新建文件和目录的默认权限:
touch mode_bits_file
mkdir mode_bits_dir
ll | grep 'mode_bits*'
目录权限
正如我们在以下表格中所见,目录是:
- 用户可读、可写以及可执行的,用户叫
root
; - 组可读、可执行的,
root
组里的所有用户; - 其他人可读、可执行的,其他用户。
用户 | 组 | 其他人 |
---|---|---|
rwx | r-x | r-x |
在没有可执行权限的情况下,我们无法访问目录。
在没有可写权限的情况下,我们无法对目录进行添加或删除文件的操作。
文件权限
正如我们在以下表格中所见,文件是:
- 用户可读、可写以及可执行的,用户叫
root
; - 组可读的,
root
组里的所有用户; - 其他人可读的,其他用户。
用户 | 组 | 其他人 |
---|---|---|
rw- | r‑‑ | r‑‑ |
字母模式位
我们可以为用户、组、其他人以及任何在字母模式里的用户设置权限。
权限分配
我们可以将读、写、执行权限分配给文件所有者、文件所属组、其他人或任何一个通过加号等号操作符来分配权限的用户,或通过减号来将用户权限删除。
用户 | 操作 | 权限 |
---|---|---|
ugoa | +‑= | rwx |
用户
一共有四种用户:文件所有者、文件所属组、其他人、所有人:
用户 | 用途 |
---|---|
u | 文件所有者 |
g | 文件所属组 |
o | 任何其他用户 |
a | 所有用户,等价于 ugo |
操作
一共有三种行为:追加、删除、分配:
操作 | 用途 |
---|---|
+ | 追加权限至用户 |
- | 删除用户权限 |
= | 分配权限给用户 |
权限
一共有三种权限:分别为读、写、执行:
权限 | 用途 |
---|---|
r | 可读或可查看权限 |
w | 可写或可编辑权限 |
x | 可执行或可运行权限 |
权限复制
我们可以将加号之后的用户权限追加至加号之前的用户权限:
复制目标 | 操作 | 复制源 |
---|---|---|
ugoa | + | ugoa |
特殊模式位变更
设置用户与组编号模式位
用户 | 操作 | 复制源 |
---|---|---|
uga | +‑ | s |
目录的影响
如果一个目录设置了组编号,则该目录内创建的文件属于该目录的组,但用户编号的设置并不见效。该目录内创建的自目录继承父目录所属的组并继承特殊模式位设置组编号。
程序或文件的影响
如果一个程序设置了用户编号,任何对其进行执行操作的人都将是其所有者。如果一个程序设置了组编号,那无论谁对其进行执行操作,运行时组始终是应用所属的组。
设置限制删除标志或粘滞位
如果我们不想其他用户对我们创建的文件做删除操作;则我们可以为其所处的目录权限添加一个叫粘滞位的特殊模式位
用户 | 操作 | 标志 |
---|---|---|
o(可选) | +‑= | t |
处在被标记目录中的文件只能被 root
用户、目录所有者以及文件所有者删除。
进行多重变更
我们可以使用逗号来将更改权限的多个行为区分开:
u+r,g+w,o-x # 所有者可读,组可写,其他人可执行
数字模式
Linux 还给我们另一种更快的用户权限变更方式。我们可以指定一个范围内的数字以体现其所对应的权限。一个完整的数字模型有四个数字。
特殊模式位
第一个数字体现的是一个特殊模式位:
模式 | 模式位 |
---|---|
4000 | 设置用户编号 |
2000 | 设置组编号 |
1000 | 限制删除标志或粘滞位 |
文件所有者
第二个数字体现的是文件的所有者:
模式 | 模式位 |
---|---|
0400 | 所有者可读或可查看 |
0200 | 所有者可写或可编辑 |
0100 | 所有者可执行或可访问 |
通常只显示为 400、200 以及 100。
文件所处组
第三个数字体现的是文件的所属组:
模式 | 模式位 |
---|---|
0040 | 所属组用户可读或可查看 |
0020 | 所属组用户可写或可编辑 |
0010 | 所属组用户可执行或可访问 |
通常只显示为 40、20 以及 10。
其他
第四个数字体现的是其他用户:
模式 | 模式位 |
---|---|
0004 | 其他用户可读或可查看 |
0002 | 其他用户可写或可编辑 |
0001 | 其他用户可执行或可访问 |
通常只显示为 4、2 以及 1。
在使用时,通常不显示前置的零。下一篇,我将向你展示如何使用以上列出的绝大部分模式位。
我所撰写的英文版本
43. File Permissions - Symbolic & Numeric Modes, Setuid & Setgid
引用
参见
上一篇:
想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻》