可写目录通常允许获准用户删除或重命名其中的目录项,即使该用户并不拥有文件本身。Sticky bit 会增加所有权限制,让共享可写目录更安全。
权限 · 第 8 课
Sticky Bit
学习 sticky bit 如何保护 `/tmp` 等共享可写目录中的目录项。
Sticky Bit 如何限制删除
目录设置 sticky bit 后,Linux 通常只允许拥有适当权限的进程、目录所有者或目录项所有者删除或重命名目录项。普通目录写入和搜索权限仍然是必要条件。
该限制针对目录项。如果文件权限原本允许,sticky bit 不会阻止文件所有者编辑文件内容,也不会让目录变为私有。
在设置 sticky bit 的共享目录中,哪个普通用户通常可以删除某个目录项?
在 `/tmp` 上识别该位
系统临时目录是一个常见示例:
$ ls -ld /tmp
drwxrwxrwt 17 root root 4096 Dec 15 11:45 /tmp
末尾的小写 t 位于其他执行位置。它表示 sticky bit 和其他执行权限都存在。大写 T 表示设置了 sticky bit,但没有其他执行权限。
因为 /tmp 通常允许所有人写入和搜索,多个用户都可以在其中创建目录项。Sticky bit 会阻止普通用户仅因为目录对所有人可写就删除其他用户的目录项。应用程序仍必须安全创建临时对象,因为可预测名称、不安全链接和宽松文件模式会带来独立风险。
目录模式末尾的小写 t 表示什么?
设置和移除 Sticky Bit
使用符号形式设置该位:
$ chmod +t shared-directory
在开头的特殊位八进制数字中,sticky 贡献 1:
$ chmod 1777 shared-directory
开头的 1 设置 sticky,777 提供普通模式。只有目录确实有意供所有本地用户共享时,这种模式才合适。对于团队目录,范围更窄的组权限可能更好。使用 chmod -t shared-directory 可只移除 sticky bit。
哪个开头的八进制值表示 sticky bit?
验证完整目录策略
Sticky 不会授予写入或搜索访问;它只会在普通权限允许修改目录后,限制删除和重命名操作。应一起验证目录的所有者、组、普通模式、ACL 和挂载上下文。请在隔离环境中使用非特权账户测试,不要修改运行中系统的 /tmp。
添加 sticky bit 是否会让其他用户可以写入原本不可写的目录?
要练习,可以创建可丢弃的共享目录,设置适当的普通模式和 sticky bit,再以两个非特权用户测试目录项删除。删除和移动文件 实验可以巩固底层的重命名和删除操作。
课程已完成
你已完成 Sticky Bit
现在,你可以说明并验证共享目录上的 sticky bit。
把 sticky 与删除和重命名时的所有权限制联系起来。
在长列表中识别小写
t和大写T。使用符号形式或开头的八进制值
1设置该位。把 sticky 与普通目录权限一起评估。