这个标题很“实战向”,而且粘滞位(Sticky Bit)正好是 Linux 权限里最容易被忽略、但非常重要的一块。
我按 问题场景 → 原理 → 用法 → 对比 → 面试/生产总结 给你一篇真正能用的指南。
【Linux 指南】Linux 粘滞位详解:解决共享目录文件删除安全隐患
一、问题背景:共享目录的“误删风险”
想象一个常见场景 👇
/shared
- 多个用户都能写
- 用来放临时文件、上传文件
权限一般是:
drwxrwxrwx shared/
⚠️ 问题来了:
- 用户 A 创建的文件
- 用户 B 可以直接删除
因为在 Linux 中:
删除文件看的不是文件权限,而是“目录权限”
二、什么是粘滞位(Sticky Bit)?
1️⃣ 定义一句话
粘滞位用于目录,限制只有“文件所有者 / 目录所有者 / root”才能删除或重命名文件。
📌 即使目录是 777,也能防止互删。
2️⃣ 现实中的经典例子:/tmp
ls -ld /tmp
drwxrwxrwt 10 root root 4096 /tmp
注意最后的 t 👈
这就是 粘滞位
三、粘滞位的核心原理(重点)
在 没有粘滞位 的目录中:
- 只要你有 写权限
- 就可以删除目录里的任何文件
在 有粘滞位 的目录中:
只有以下用户可以删除文件:
- 文件的 所有者
- 目录的 所有者
- root
👉 其他用户即使有写权限,也 删不了别人的文件
四、如何设置粘滞位?
1️⃣ 使用 chmod(推荐)
chmod +t shared
查看:
ls -ld shared
drwxrwxrwt shared
2️⃣ 使用数字方式(记这个)
chmod 1777 shared
| 数字 | 含义 |
|---|---|
| 1 | 粘滞位 |
| 777 | rwx rwx rwx |
五、权限位中字母 t 和 T 的区别
| 显示 | 含义 |
|---|---|
t | 有执行权限 + 粘滞位 |
T | 无执行权限 + 粘滞位 |
⚠️ 目录没有执行权限是无法进入的
所以一般你看到的是 小写 t
六、粘滞位 vs SUID / SGID(别混了)
| 位 | 作用对象 | 作用 |
|---|---|---|
| SUID | 文件 | 以文件所有者身份执行 |
| SGID | 文件 / 目录 | 继承用户组 |
| Sticky Bit | 目录 | 防止文件被误删 |
👉 粘滞位 只对目录有意义
七、实战示例(非常重要)
场景:多人上传目录
mkdir /upload
chmod 777 /upload
chmod +t /upload
效果:
- 所有人可上传
- 只能删除 自己上传的文件
八、常见误区(面试 & 实战)
❌ 误区 1:文件权限能防止被删
错!删除看的是目录权限
❌ 误区 2:777 就一定不安全
不完全,配合粘滞位是安全的
❌ 误区 3:粘滞位影响文件内容修改
不影响,只影响 删除 / 重命名
九、面试一句话标准答案
粘滞位主要用于共享目录,即使目录对所有用户可写,也能保证只有文件所有者、目录所有者或 root 才能删除或重命名文件,典型应用是 /tmp 目录。
十、什么时候一定要用粘滞位?
✅ /tmp、/var/tmp
✅ 多用户共享目录
✅ 上传目录
✅ CI/CD 临时构建目录
十一、终极总结
粘滞位解决的不是“能不能写”,而是“谁能删”。
如果你愿意,我还能继续给你:
- 🔥 SUID / SGID / Sticky Bit 对比速记
- 🔥 Linux 权限位完整设计逻辑
- 🔥 生产环境文件权限最佳实践
- 🔥 面试 Linux 权限 10 问 10 答
你是 Linux 运维 / 后端开发,还是 准备面试?我可以按你的方向继续深入。