目录
引言:
1. Linux 用户体系
1.1 两种用户类型
1.2 用户切换:su 命令
2. 权限对比演示
2.1 场景:安装可执行程序
2.2 普通用户尝试(失败)
2.3 超级用户执行(成功)
3. 临时提权:sudo 命令
3.1 为什么需要 sudo?
3.2 sudo 使用前提
3.3 配置 sudo 权限
3.4 sudo 实战演示
4. 权限的本质理解
4.1 现实世界的权限
4.2 为什么需要权限?
4.3 权限的组成公式
5. Linux 文件权限体系
5.1 三种角色
5.2 文件权限属性
5.3 解读 ll 命令输出
5.4 权限验证实例
6. 理论铺垫完成
6.1 角色与属性的结合表述
6.2 理论阶段总结
7. 修改文件权限:chmod
7.1 命令基础
7.2 chmod 命令详解
7.3 符号模式实战
7.4 八进制数字模式
7.5 权限验证与关键认知
1. 权限拒绝场景:
2. 去掉读权限后:
3. 角色匹配优先级:
4. root 的特权:
5. 可执行权限的本质:
8. 修改文件归属:chown 与 chgrp
8.1 chown:修改拥有者
8.2 chgrp:修改所属组
8.3 同时修改拥有者和所属组
9. 目录权限详解
9.1 目录的 rwx 含义
9.2 root 的绝对权限
10. 用户隔离机制
10.1 家目录的权限设计
11. 默认权限与 umask
11.1 默认权限
11.2 实际看到的权限
11.3 umask 机制
11.4 umask 的作用
12. 粘滞位:解决目录写权限的隐患
12.1 问题现象
12.2 粘滞位(Sticky Bit)
13. 多用户文件级协作实践
13.1 协作场景的需求
13.2 /tmp 目录:系统级的协作空间
13.3 自定义粘滞位目录
13.4 方案对比
13.5 最佳实践建议
本节命令速查表
权限体系完整总结
结语:
引言:
Linux 作为多用户操作系统,权限管理是其安全体系的基石。无论是个人开发环境还是企业生产服务器,理解并正确配置权限,都是保障系统安全、实现高效协作的前提。
本文将从最基础的用户类型出发,逐步深入到权限的本质、角色的设计、属性的操作,最终落实到多用户协作的实战场景。通过"理论铺垫 → 命令实操 → 场景应用"的三段式结构,帮助你建立完整的 Linux 权限认知框架。
接下来进入正文————>

1. Linux 用户体系
1.1 两种用户类型
Linux 系统下有两种核心用户:
| 超级用户 (root) | # | 不受限制,可执行任何操作 |
| 普通用户 | $ | 受限,只能操作自己的资源 |
💡 类比 Windows:Windows 中的"以管理员身份运行"就是临时获取超级用户权限。
1.2 用户切换:su 命令
基本用法:
# root → 普通用户
[root@VM-0-2-centos ~]# su qyh
# 普通用户 → root(需输入 root 密码)
[qyh@VM-0-2-centos ~]$ su root
su vs su – 的区别:
# su:仅切换身份,不改变当前目录
[root@VM-0-2-centos 2026_9_5]# su qyh
[qyh@VM-0-2-centos 2026_9_5]$ pwd
/root/2026_9_5 # ← 仍在原目录
# su -:重新登录,切换到用户主目录
[root@VM-0-2-centos 2026_9_5]# su – qyh
[qyh@VM-0-2-centos ~]$ pwd
/home/qyh # ← 已切换到用户主目录
| 当前目录 | 不变 | 切换到用户主目录 |
| 环境变量 | 保留原用户(不重新登录,仅身份切换) | 加载新用户环境(重新登录) |
| 使用场景 | 临时执行命令 | 完全切换用户环境 |
2. 权限对比演示
2.1 场景:安装可执行程序
编译程序并尝试安装到系统目录:
# 编译程序
[root@VM-0-2-centos 2026_9_5]# gcc run1.c -o run1
[root@VM-0-2-centos 2026_9_5]# ./run1
hello linux
^C
目标:将 run1 拷贝到 /usr/bin,使其像系统命令一样直接可用。
💡 原理:系统命令(如 ls、tree)能直接执行,是因为它们存放在 /usr/bin 等系统目录中。我们下载的软件能直接用 tree,sz,rz也是因为存放在了 /usr/bin 等系统目录中
2.2 普通用户尝试(失败)
# 切换到普通用户
[root@VM-0-2-centos 2026_9_5]# su qyh
# 尝试拷贝到系统目录
[qyh@VM-0-2-centos 2026_9_5]$ cp run1 /usr/bin
cp: cannot create regular file '/usr/bin/run1': Permission denied
失败原因:/usr/bin 是系统目录,普通用户没有写入权限。
2.3 超级用户执行(成功)
# 切换回 root
[qyh@VM-0-2-centos 2026_9_5]$ su
Password:
# 执行拷贝
[root@VM-0-2-centos 2026_9_5]# cp run1 /usr/bin
# 验证安装成功
[root@VM-0-2-centos 2026_9_5]# run1
hello linux
^C
[root@VM-0-2-centos 2026_9_5]# which run1
/usr/bin/run1
3. 临时提权:sudo 命令
3.1 为什么需要 sudo?
场景:普通用户偶尔需要执行高权限操作,但不想频繁切换用户。
sudo 的作用:允许普通用户临时以 root 权限执行指定命令(比如安装删除软件)。
3.2 sudo 使用前提
[qyh@VM-0-2-centos ~]$ sudo ls
[sudo] password for qyh:
qyh is not in the sudoers file. This incident will be reported.
错误原因:用户不在 sudoers 白名单中。
sudoers 文件:
[qyh@VM-0-2-centos ~]$ ll /etc/sudoers
-r–r—– 1 root root 4363 Jul 30 16:12 /etc/sudoers
| 拥有者 | root |
| 权限 | 仅 root 可读可写 |
| 作用 | 管理哪些用户可以使用 sudo |
用sudo提权的时候,验证的时候用的不是管理员的密码,而是自己普通用户的密码,就是因为这个sudoers的存在,sudoers目录只能被root操作,也就是间接还是进行了保护
3.3 配置 sudo 权限
必须以 root 身份编辑:
[root@VM-0-2-centos ~]# vim /etc/sudoers
# 添加普通用户(格式与 root 相同):
root ALL=(ALL) ALL
qyh ALL=(ALL) ALL
3.4 sudo 实战演示
# 普通用户创建文件
[qyh@VM-0-2-centos ~]$ > nor_1
# 使用 sudo 创建 root 权限文件
[qyh@VM-0-2-centos ~]$ sudo touch root_1
[sudo] password for qyh: # ← 输入普通用户自己的密码
# 查看文件属性
[qyh@VM-0-2-centos ~]$ ll
total 0
-rw-rw-r– 1 qyh qyh 0 Sep 5 15:41 nor_1 # ← 普通文件
-rw-r–r– 1 root root 0 Sep 5 15:41 root_1 # ← root 创建的文件
# 普通用户可以修改自己的文件
[qyh@VM-0-2-centos ~]$ echo "wahaha" > nor_1
[qyh@VM-0-2-centos ~]$ cat nor_1
wahaha
# 无法修改 root 的文件
[qyh@VM-0-2-centos ~]$ echo "ye" > root_1
-bash: root_1: Permission denied
🏢 企业实践:新员工需要 sudo 权限时,需向系统管理员申请,由管理员将其加入 sudoers 文件。能被 sudo 授权的用户都是被信任的。
4. 权限的本质理解
4.1 现实世界的权限
| 校长办公室 | 校长能进,学生不能进 |
| 视频网站 VIP | VIP 能看高清,普通用户不能 |
| 公司机密文件 | 管理层能看,普通员工不能 |
核心结论:权限的本质是能或不能做某件事。
4.2 为什么需要权限?
目的:控制用户行为,防止错误和混乱。
举例:用户 A 和用户 B 共用一台机器,如果没有权限隔离:
- 用户 A 辛苦写的代码,用户 B 可以轻易删除
- 系统关键配置被误改,导致服务崩溃
🌍 社会类比:国家的法律本质上也是一种"权限",通过规则约束行为,维护社会秩序。
4.3 权限的组成公式
权限 = 角色(人) + 目标属性(事物特性)
两个必要条件:
| 角色匹配 | 你是谁不重要,扮演什么角色才重要 | 校长能进办公室是因为"校长"角色,不是因为校长名是"张三" |
| 目标具备属性 | 目标事物必须有对应的属性 | 即使 LeetCode 最高会员,也无法在上面看电影(平台没有视频属性) |

5. Linux 文件权限体系
因为我们曾经学过Linux下一切皆文件,所以我们要学习Linux的权限我们面对的对象都是文件
5.1 三种角色
Linux 为每个文件定义了三种角色:
| 拥有者 (Owner) | 文件的创建者,默认拥有最高权限 |
| 所属组 (Group) | 与拥有者同组的用户集合 |
| 其他用户 (Other) | 既不是拥有者,也不属于所属组的用户 |
-rw-rw-r– 1 qyh qyh 7 Sep 5 15:41 nor_1
│ │
│ └── 所属组
└── 拥有者
这就和我们上面张三与校长的关系一样,拥有者,所属组,other这些都是角色,而root,qyh这些对应的就是具体的人
所以一个文件,他的拥有者和所属组通常是有对应的角色的,而这样的角色通常是要由对应的人来扮演的,所以角色和人俩者不但不冲突,而且是互补的
为什么需要"所属组"?
场景:公司内部采用"赛马制度",A 组和 B 组在同一台服务器上开发同类产品。张三在 A 组目录下写代码,需要向 A 组成员展示,但不想让 B 组看到。
解决方案:将 A 组所有用户加入文件的"所属组",开放所属组权限。这样既方便组内协作,又保护了代码不被竞争对手(B 组)获取。

所以有所属组的根本原因就是为了进行更精细的权限管理,而为了进行更精细化的权限管理就需要有更精细化的身份角色
为什么 Other 不需要记录?
- 拥有者和所属组需要明确指定具体的人或组
- Other 是"兜底"角色:只要不是拥有者,也不属于所属组,就是 Other
- Other 可能包含系统上所有其他用户,数量不固定,无需逐一记录
5.2 文件权限属性
Linux 中文件与权限相关的属性有三种:
| 读权限 | r | 读取文件内容 / 列出目录内容 |
| 写权限 | w | 修改文件内容 / 在目录中创建删除文件 |
| 执行权限 | x | 执行文件(程序/脚本)/ 进入目录 |
5.3 解读 ll 命令输出
[qyh@VM-0-2-centos ~]$ ll
total 4
-rw-rw-r– 1 qyh qyh 7 Sep 5 15:41 nor_1
-rw-r–r– 1 root root 0 Sep 5 15:41 root_1
字段解析:
-rw-rw-r– 1 qyh qyh 7 Sep 5 15:41 nor_1
││ │ │ │ │ │ │ │ │
││ │ │ │ │ │ │ │ └── 文件名
││ │ │ │ │ │ │ └── 修改时间
││ │ │ │ │ │ └── 文件大小(字节)
││ │ │ │ │ └── 所属组
││ │ │ │ └── 拥有者
││ │ │ └── 硬链接数
││ │ └── 其他用户权限
││ └── 所属组权限
│└── 拥有者权限
└──文件类型
权限位详解(以 -rw-rw-r– 为例):
– rw- rw- r–
文件类型 拥有者 所属组 其他用户
(user) (group) (other)
| 第 1 位 | – | 文件类型(- 普通文件,d 目录,l 链接) |
| 第 2-4 位 | rw- | 拥有者权限:读、写、不可执行 |
| 第 5-7 位 | rw- | 所属组权限:读、写、不可执行 |
| 第 8-10 位 | r– | 其他用户权限:只读 |
权限位规则:
- 每组固定 3 个位置,顺序不可变:r(读)、w(写)、x(执行)
- 有权限显示对应字母,无权限显示 –
- 顺序不能颠倒,必须按 rwx 排列

5.4 权限验证实例
# nor_1 文件权限:-rw-rw-r–
# 拥有者(qyh):读、写 ✓
# 所属组(qyh):读、写 ✓
# 其他用户:读 ✓,写 ✗
[qyh@VM-0-2-centos ~]$ echo "test" > nor_1 # 拥有者可以写 ✓
[qyh@VM-0-2-centos ~]$ cat nor_1 # 所有人都可以读 ✓
# root_1 文件权限:-rw-r–r–
# 拥有者(root):读、写
# 其他用户:只读
[qyh@VM-0-2-centos ~]$ echo "test" > root_1 # 其他用户不能写 ✗
-bash: root_1: Permission denied
6. 理论铺垫完成
6.1 角色与属性的结合表述
至此,我们已经掌握了 Linux 权限的两个核心要素:
| 角色 | 拥有者、所属组、Other | 文件归属信息(第3、4列) |
| 属性 | 读(r)、写(w)、执行(x) | 权限位字符串(第1列) |
完整的权限表述方式:
描述一个文件的权限时,必须将角色和目标属性结合起来表述。
示例:-rw-rw-r– 1 qyh qyh 7 Sep 5 15:41 nor_1
| 拥有者权限 | qyh 具备 读、写 权限(rw-) |
| 所属组权限 | qyh 组具备 读、写 权限(rw-) |
| 其他用户权限 | 其他用户仅具备 读 权限(r–) |
| 不具备的权限 | 所有角色都不具备 执行 权限(-) |
错误表述:"这个文件权限是 rw-" 正确表述:"这个文件的拥有者具备读、写权限,所属组具备读、写权限,其他用户具备读权限"
💡 关键认知:单独的 rw- 没有任何意义,必须明确"谁"拥有这个权限。角色和属性缺一不可,二者结合才能构成完整的权限概念。
6.2 理论阶段总结
| 用户体系 | root vs 普通用户,su/su -/sudo 提权机制 |
| 权限本质 | 权限 = 角色 + 目标属性 |
| 三种角色 | 拥有者(Owner)、所属组(Group)、其他用户(Other) |
| 三种属性 | 读(r)、写(w)、执行(x) |
| 权限表示 | ll 命令的 10 位权限字符串解读 |
| 完整表述 | 角色 + 属性的结合描述 |
7. 修改文件权限:chmod
7.1 命令基础
权限修改的本质:围绕"角色"和"目标属性"两个维度展开。
| 目标属性(权限位) | chmod | 修改读/写/执行权限 |
| 角色(拥有者) | chown | 修改文件拥有者 |
| 角色(所属组) | chgrp | 修改文件所属组 |
7.2 chmod 命令详解
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- -R:递归修改目录及其子文件的权限
⚠️ 重要:只有文件的拥有者和 root 才能修改文件权限。
权限值格式一:符号模式
| + | 增加权限 | chmod u+w file |
| – | 取消权限 | chmod o-x file |
| = | 赋予指定权限 | chmod a=r file |
用户符号:
| u | 拥有者(user) |
| g | 所属组(group) |
| o | 其他用户(other) |
| a | 所有用户(all = u+g+o) |
权限值格式二:八进制数字
| 7 | 111 | rwx |
| 6 | 110 | rw- |
| 5 | 101 | r-x |
| 4 | 100 | r– |
| 3 | 011 | -wx |
| 2 | 010 | -w- |
| 1 | 001 | –x |
| 0 | 000 | — |
7.3 符号模式实战
# 查看初始权限
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 24
-rw-rw-r– 1 qyh qyh 18763 Sep 5 21:30 Linux sysprog.txt
-rw-rw-r– 1 qyh qyh 7 Sep 5 21:34 nor_1
# 分步修改权限
[qyh@VM-0-2-centos linux-sys-prog]$ chmod o-r nor_1 # 去掉其他用户的读权限
[qyh@VM-0-2-centos linux-sys-prog]$ chmod u+x nor_1 # 给拥有者添加执行权限
[qyh@VM-0-2-centos linux-sys-prog]$ chmod g=rx nor_1 # 设置所属组为读+执行
# 查看修改结果
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 24
-rw-rw-r– 1 qyh qyh 18763 Sep 5 21:30 Linux sysprog.txt
-rwxr-x— 1 qyh qyh 7 Sep 5 21:34 nor_1
批量修改多个角色:
[qyh@VM-0-2-centos linux-sys-prog]$ chmod u-x,g+w,o+r nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 24
-rw-rw-r– 1 qyh qyh 18763 Sep 5 21:30 Linux sysprog.txt
-rw-rwxr– 1 qyh qyh 7 Sep 5 21:34 nor_1
7.4 八进制数字模式
原理:将三组 rwx 视为三位二进制数,转换为八进制。
rw-rw-r– → 110 110 100 → 6 6 4
实战:
# 设置权限为 r–r–r–(444)
[qyh@VM-0-2-centos linux-sys-prog]$ chmod 444 nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 24
-rw-rw-r– 1 qyh qyh 18763 Sep 5 21:30 Linux sysprog.txt
-r–r–r– 1 qyh qyh 9 Sep 6 13:34 nor_1
💡 对比:chmod 444 file 比 chmod a=r file 更简洁,适合批量设置。
7.5 权限验证与关键认知
1. 权限拒绝场景:
[qyh@VM-0-2-centos linux-sys-prog]$ ll nor_1
-rwxr–r– 1 qyh qyh 9 Sep 6 13:34 nor_1
# 拥有者可读可写可执行
[qyh@VM-0-2-centos linux-sys-prog]$ echo "in nor_1" > nor_1 # ✓ 写成功
[qyh@VM-0-2-centos linux-sys-prog]$ cat nor_1 # ✓ 读成功
# 尝试执行
[qyh@VM-0-2-centos linux-sys-prog]$ ./nor_1
-bash: ./nor_1: Permission denied # ✗ 执行失败
2. 去掉读权限后:
[qyh@VM-0-2-centos linux-sys-prog]$ chmod u-r nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
–w-r–r– 1 qyh qyh 9 Sep 6 13:34 nor_1
# 无法读取
[qyh@VM-0-2-centos linux-sys-prog]$ cat nor_1
cat: nor_1: Permission denied # ✗ 读被拒绝
3. 角色匹配优先级:
🔑 核心规则:系统从前往后匹配角色,一旦匹配成功即停止,不再继续检查后续角色。
# qyh 既是拥有者,又在所属组中
# 但匹配到"拥有者"后即停止,以拥有者权限为准
# 即使所属组有读权限,拥有者没有读权限,qyh 也无法读取
4. root 的特权:
👑 root 不受任何权限约束,所有权限规则仅对普通用户生效。
5. 可执行权限的本质:
[qyh@VM-0-2-centos linux-sys-prog]$ ll nor_1
-rwxr–r– 1 qyh qyh 9 Sep 6 13:34 nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ./nor_1
./nor_1: line 1: syntax error near unexpected token `in'
./nor_1: line 1: `in nor_1'
📌 重要区分:
- 可执行权限 = 允许执行的机会(门槛)
- 文件可执行 = 文件本身是有效程序(能力)
二者必须同时满足,才能真正执行。给文本文件加 x 权限,只是给了"机会",但文件本身不具备"能力",所以执行失败。

8. 修改文件归属:chown 与 chgrp
8.1 chown:修改拥有者
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
- chown user1 file1
- chown -R user1 dir1(递归修改目录)
权限限制:
# 普通用户无法直接转让文件
[qyh@VM-0-2-centos linux-sys-prog]$ chown root nor_1
chown: changing ownership of 'nor_1': Operation not permitted
[qyh@VM-0-2-centos linux-sys-prog]$ chown QYH nor_1
chown: changing ownership of 'nor_1': Operation not permitted
🤔 为什么修改属性可以自己改,转让文件却不行?
修改属性(chmod)影响范围仅限于自己,而转让文件(chown)涉及他人利益,需要更高权限审核。这是系统的安全设计。
使用 sudo 提权:
[qyh@VM-0-2-centos linux-sys-prog]$ sudo chown QYH nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
-rwxr–r– 1 QYH qyh 9 Sep 6 13:34 nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ sudo chown root nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
-rwxr–r– 1 root qyh 9 Sep 6 13:34 nor_1
8.2 chgrp:修改所属组
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
实例:chgrp users /abc/f2
同样需要 sudo 提权。
8.3 同时修改拥有者和所属组
推荐用法:sudo chown 拥有者:所属组 文件名
[qyh@VM-0-2-centos linux-sys-prog]$ sudo chown QYH:QYH nor_1
[qyh@VM-0-2-centos linux-sys-prog]$ ll
-rwxr–r– 1 QYH QYH 9 Sep 6 13:34 nor_1
💡 实用技巧:日常只需记住 chown 即可,chgrp 仅在单独修改所属组时使用。
9. 目录权限详解
9.1 目录的 rwx 含义
| r(读) | 查看目录内容(ls) | ls: Permission denied |
| w(写) | 创建/删除目录内文件 | 无法新建或删除文件 |
| x(执行) | 进入目录(cd) | cd: Permission denied |
验证:
[qyh@VM-0-2-centos linux-sys-prog]$ ll
drwxrwxr-x 2 qyh qyh 4096 Sep 6 19:26 code
📁 默认要求:新建目录通常需要 rwx 全部权限,否则无法正常进入和操作。
9.2 root 的绝对权限
👑 唯一例外:root 几乎不受权限约束,除非文件正被其他进程占用(类似 Windows 中正在运行的程序无法删除)。
10. 用户隔离机制
10.1 家目录的权限设计
[qyh@VM-0-2-centos linux-sys-prog]$ ll /home
total 12
drwx—— 2 lighthouse lighthouse 4096 Jul 30 16:12 lighthouse
drwx—— 6 qyh qyh 4096 Sep 5 21:38 qyh
drwx—— 2 QYH QYH 4096 Sep 6 18:40 QYH
权限分析:drwx——
| 拥有者 | rwx | 可进入、查看、操作自己的家目录 |
| 所属组 | — | 无任何权限 |
| 其他用户 | — | 无任何权限 |
🔒 隔离原理:每个用户的家目录仅对拥有者开放,其他用户(包括同组)无法进入。这是 Linux 多用户隔离的基础。
用户之间在基于权限方面就可以实现多用户之间的隔离
11. 默认权限与 umask
11.1 默认权限
| 普通文件 | 0666(rw-rw-rw-) | 默认不可执行(安全考虑) |
| 目录 | 0777(rwxrwxrwx) | 默认全开 |
11.2 实际看到的权限
[qyh@VM-0-2-centos linux-sys-prog]$ touch cmd
[qyh@VM-0-2-centos linux-sys-prog]$ mkdir code
[qyh@VM-0-2-centos linux-sys-prog]$ ll
-rw-rw-r– 1 qyh qyh 0 Sep 6 20:09 cmd # 实际:664
drwxrwxr-x 2 qyh qyh 4096 Sep 6 20:08 code # 实际:775
差异原因:umask(权限掩码)过滤了部分默认权限。
11.3 umask 机制
功能:查看或修改文件权限掩码
公式:实际权限 = 默认权限 & ~umask
⚠️ 注意:是位运算(与+取反),不是减法。
查看 umask:
[qyh@VM-0-2-centos linux-sys-prog]$ umask
0002 # 普通用户默认
[qyh@VM-0-2-centos linux-sys-prog]$ sudo umask
0022 # root 默认
修改 umask:
[qyh@VM-0-2-centos linux-sys-prog]$ umask 0001
计算示例:
普通文件默认:0666 → 110 110 110
umask: 0002 → 000 000 010
~umask: 7775 → 111 111 101
实际权限: 0666 & 7775 = 0664 → 110 110 100 → rw-rw-r–
11.4 umask 的作用
| 目的 | 屏蔽默认权限中不需要的权限 |
| 灵活性 | 让系统权限可配置,满足不同场景 |
| 临时性 | 内存级设置,关闭终端后恢复默认值 |
| 持久性 | 系统配置文件中的 umask 在登录时加载 |
12. 粘滞位:解决目录写权限的隐患
12.1 问题现象
目录写权限的副作用:只要用户对目录有写权限,就可以删除目录中的任何文件,无论是否拥有该文件的写权限。
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 4
-rw-rw-r– 1 qyh qyh 0 Sep 6 20:09 cmd
drwxrwxr-x 2 qyh qyh 4096 Sep 6 20:08 code
———- 1 root root 0 Sep 6 20:52 rt # ← root 创建,权限全关
[qyh@VM-0-2-centos linux-sys-prog]$ whoami
qyh
# qyh 无法读写 rt,却能删除!
[qyh@VM-0-2-centos linux-sys-prog]$ rm rt
rm: remove write-protected regular empty file 'rt'? y
[qyh@VM-0-2-centos linux-sys-prog]$ ll
total 4
-rw-rw-r– 1 qyh qyh 0 Sep 6 20:09 cmd
drwxrwxr-x 2 qyh qyh 4096 Sep 6 20:08 code
😰 不合理之处:我创建的文件,凭什么被你删掉?
12.2 粘滞位(Sticky Bit)
解决方案:Linux 引入粘滞位,限制目录中文件的删除权限。
设置方法:chmod +t 目录名
效果:
- 目录内的文件只能由 文件拥有者、目录拥有者 或 root 删除
- 其他用户即使有目录写权限,也无法删除他人文件
典型应用:/tmp 目录
$ ll -d /tmp
drwxrwxrwt 10 root root 4096 Sep 6 20:00 /tmp
↑
粘滞位标志(t)
📝 总结:粘滞位是目录权限的重要补充,保障了多用户共享目录中的文件安全。只需要给需要共享的目录添加粘滞位
13. 多用户文件级协作实践
13.1 协作场景的需求
前面我们讲过,Linux 通过家目录的权限设计(drwx——)实现了用户之间的隔离。但这带来一个问题:
当多个用户需要协作处理同一文件时,文件该放在哪里?
错误方案:放在某个用户的家目录下
- 用户 A 无法进入用户 B 的家目录
- 即使通过 sudo 进入,也破坏了隔离机制
正确方案:使用公共目录 + 粘滞位保障安全
13.2 /tmp 目录:系统级的协作空间
/tmp 是 Linux 系统的临时文件目录,天生具备粘滞位:
$ ll -d /tmp
drwxrwxrwt 10 root root 4096 Sep 6 20:00 /tmp
↑
粘滞位标志(t)
特性:
| 开放性 | 所有用户均可进入、创建文件 |
| 安全性 | 粘滞位保障,只能删除自己的文件 |
| 临时性 | 系统重启后通常清空(视配置而定) |
协作流程:
# 用户 A 创建共享文件
[userA@VM-0-2-centos ~]$ cd /tmp
[userA@VM-0-2-centos tmp]$ echo "共享数据" > shared_data.txt
[userA@VM-0-2-centos tmp]$ chmod 664 shared_data.txt
# 用户 B 读取并编辑
[userB@VM-0-2-centos ~]$ cd /tmp
[userB@VM-0-2-centos tmp]$ cat shared_data.txt
共享数据
[userB@VM-0-2-centos tmp]$ echo "补充内容" >> shared_data.txt
# 用户 C 无法删除(即使目录可写)
[userC@VM-0-2-centos tmp]$ rm shared_data.txt
rm: cannot remove 'shared_data.txt': Operation not permitted # ← 粘滞位生效
13.3 自定义粘滞位目录
除了 /tmp,也可以自行创建带粘滞位的协作目录:
# 管理员创建共享目录
[root@VM-0-2-centos ~]# mkdir /shared
[root@VM-0-2-centos ~]# chmod 1777 /shared # 1 表示设置粘滞位
[root@VM-0-2-centos ~]# ll -d /shared
drwxrwxrwt 2 root root 4096 Sep 6 21:00 /shared
# 或分步设置
[root@VM-0-2-centos ~]# chmod +t /shared
📝 实际应用:企业内网中,常用于设置部门级共享目录,如 /shared/department_a/。
13.4 方案对比
| /tmp 目录 | 临时协作、短期任务 | 系统自带,无需配置 | 文件可能随重启清除 |
| 自定义粘滞位目录 | 长期协作、部门共享 | 持久化存储,可控性强 | 需要管理员配置 |
| 版本控制系统(Git/SVN) | 代码协作、文档管理 | 完整历史追溯,冲突解决 | 学习成本较高 |
13.5 最佳实践建议
| 临时文件交换 | /tmp 目录 |
| 小型团队长期协作 | 自定义粘滞位目录 + 定期备份 |
| 代码/文档协作 | Git 等版本控制系统 |
| 跨部门大文件共享 | 企业网盘 + 权限分组 |


本节命令速查表
| su | 切换用户 | su qyh、su – |
| sudo | 临时提权 | sudo touch file |
| chmod | 修改文件权限 | chmod 755 file、chmod u+x file |
| chown | 修改文件拥有者 | chown user file、chown user:group file |
| chgrp | 修改文件所属组 | chgrp group file |
| umask | 查看/设置权限掩码 | umask、umask 0022 |
| chmod +t | 设置粘滞位 | chmod +t /shared_dir |
权限体系完整总结
| 用户切换 | su、su -、sudo 提权机制 |
| 权限本质 | 权限 = 角色 + 目标属性 |
| 三种角色 | 拥有者、所属组、Other |
| 三种属性 | 读(r)、写(w)、执行(x) |
| 修改权限 | chmod(符号模式 + 八进制模式) |
| 修改归属 | chown、chgrp |
| 目录权限 | r(查看)、w(创建删除)、x(进入) |
| 用户隔离 | 家目录 drwx—— 权限设计 |
| 默认权限 | umask 掩码机制 |
| 粘滞位 | +t 防止误删他人文件 |
| 多用户协作 | /tmp 或自定义粘滞位目录 |
结语:
至此,我们已经完整掌握了 Linux 权限体系的全部核心知识。
从最初区分 root 与普通用户,到理解 su 与 sudo 的提权机制;从建立"权限 = 角色 + 目标属性"的理论框架,到熟练运用 chmod、chown 修改权限与归属;从解读 ll 命令的 10 位权限字符串,到掌握 umask 默认权限和粘滞位等进阶机制;最终落实到多用户文件级协作的最佳实践——你已经具备了独立管理 Linux 系统权限的能力。
核心认知回顾:
| 微观 | 每个文件的 rwx 权限位,精确控制读、写、执行 |
| 中观 | 拥有者、所属组、Other 的角色划分,实现精细化管控 |
| 宏观 | 家目录隔离、公共目录协作、粘滞位保护,构建安全的多用户环境 |
实践建议:
| 个人学习 | 创建多个普通用户,模拟权限冲突与解决 |
| 团队协作 | 使用自定义粘滞位目录,配合定期备份 |
| 代码开发 | 优先使用 Git 等版本控制系统,权限管理为辅 |
| 系统运维 | 定期检查 /tmp 等公共目录,清理过期文件 |
权限管理是 Linux 系统安全的基石,也是运维工程师的必备技能。理解权限背后的设计哲学——最小权限原则、角色分离、防御性默认——将帮助你构建更健壮、更安全的系统环境。
希望以上内容对你有所帮助,感谢观看,若觉得写的还可以,可以分享给朋友一起来看哦,毕竟一起进步更有动力嘛,当然能关注一下就更好啦。

网硕互联帮助中心



评论前必须登录!
注册