【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患

这个标题很“实战向”,而且粘滞位(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 👈
这就是 粘滞位


三、粘滞位的核心原理(重点)

在 没有粘滞位 的目录中:

  • 只要你有 写权限
  • 就可以删除目录里的任何文件

在 有粘滞位 的目录中:
只有以下用户可以删除文件:

  1. 文件的 所有者
  2. 目录的 所有者
  3. root

👉 其他用户即使有写权限,也 删不了别人的文件


四、如何设置粘滞位?

1️⃣ 使用 chmod(推荐)

chmod +t shared

查看:

ls -ld shared
drwxrwxrwt shared

2️⃣ 使用数字方式(记这个)

chmod 1777 shared
数字含义
1粘滞位
777rwx 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 运维 / 后端开发,还是 准备面试?我可以按你的方向继续深入。

文章已创建 4298

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部