Sticky Bit
100%

权限 · 第 8 课

Sticky Bit

学习 sticky bit 如何保护 `/tmp` 等共享可写目录中的目录项。

可写目录通常允许获准用户删除或重命名其中的目录项,即使该用户并不拥有文件本身。Sticky bit 会增加所有权限制,让共享可写目录更安全。

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 与普通目录权限一起评估。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
返回 权限