Linux 粘滞位(Sticky Bit)详解
一、什么是粘滞位(Sticky Bit)
粘滞位(Sticky Bit)是 Linux 和 Unix 系统中一种特殊的权限设置,主要应用于目录 ,其作用是在多人共享访问的目录中,防止用户删除他人创建的文件。
作用总结:
- 所有用户可以在目录中创建文件;
- 只有文件的所有者或 root 用户才能删除该文件;
- 粘滞位常用于
/tmp
、公共工作目录/work
等共享目录中。
二、权限表示与原理
当目录启用了粘滞位后,使用 ls -ld
命令查看权限时,权限字符串的最后一位会变为 t
或 T
:
t
:表示粘滞位已启用,且目录对所有人有执行权限;T
:表示粘滞位已启用,但目录对其他用户没有执行权限。
示例:
bash
drwxrwxrwt 7 root root 4096 Jun 2 11:00 /tmp
三、命令用法总结
添加粘滞位
bash
chmod o+t 目录名
删除粘滞位
bash
chmod o-t 目录名
查看权限
bash
ls -ld 目录名
四、实战演示:共享目录防误删
场景:多人共享目录 /work
需求:允许所有用户写入,但只能删除自己创建的文件。
Step 1:root 设置共享目录
bash
mkdir /work
chmod 777 /work
touch /work/root.txt
Step 2:普通用户 wangwu 删除 root 文件(未设置粘滞位)
bash
su - wangwu
rm /work/root.txt # 成功删除
Step 3:root 启用粘滞位
bash
chmod o+t /work
ls -ld /work # 权限显示 drwxrwxrwt
Step 4:wangwu 再次尝试删除 root 文件
bash
rm /work/root1.txt # 删除失败
五、权限对比示意图
权限设置 | 是否可删除他人文件 | 是否可写入 | 示例目录 |
---|---|---|---|
777 | ✅ 是 | ✅ 是 | /tmp 无粘滞位(不安全) |
777 + o+t | ❌ 否 | ✅ 是 | /tmp 、/work 安全共享 |
755 | ❌ 否(仅属主) | 🚫 否(其他用户) | 常规只读目录 |
六、粘滞位与 chmod 数字权限的结合
粘滞位对应数字权限中的"1",位于最高位,即第四位(特殊权限位):
- 示例:
chmod 1777 /work
即为给目录设置 rwxrwxrwt 权限。
数字权限 | 含义 |
---|---|
1777 | rwxrwxrwt |
0777 | rwxrwxrwx(无粘滞位) |
七、常见误区
- ❌ 粘滞位对文件无效 ------ 它仅作用于目录;
- ❌ 粘滞位不影响文件读写权限 ------ 它只控制删除权限;
- ❌ 认为粘滞位是 ACL 或 SELinux 权限替代品 ------ 粘滞位是独立机制;
- ✅ 可以与 ACL、SELinux 一起使用以细化控制。
八、日常建议
- 推荐设置
/tmp
,/var/tmp
,/work
等目录为1777
; - 创建共享目录时,统一由 root 设置粘滞位;
- 管理员应定期检查目录权限,防止误删文件风险。
九、拓展阅读
man chmod
查看权限控制手册;- 粘滞位的历史最初是用于加速程序加载,但现在主要用于目录安全控制;
- 其他特殊位包括 SUID 、SGID,用于文件执行权限控制。
🛡️ 总结:粘滞位是一种非常简单且实用的权限控制机制,尤其适用于多人操作环境中对目录的保护,是系统安全中不可忽视的一环。