粘滞位是保护共享目录不被误删的基础机制,仅限制删除和重命名,需目录权限含执行位才有效(末位为t);设置可用chmod +t或1777/1755,自动化中应先加o+x再设a+t,递归设置用-r但不继承,新建目录需单独指定权限。

粘滞位是保护共享目录不被误删的最基础、最有效的机制。它不改变文件读写权限,只限制删除和重命名操作——只有文件所有者、目录所有者或 root 才能删掉目录里的文件,哪怕目录权限是 777。
确认目标并检查当前状态
粘滞位只对目录生效,设置前必须确保目标是目录而非文件:
- 运行 ls -ld /shared,确认输出以 d 开头(如
drwxrwxr-x) - 观察末位权限:若已是 t 或 T,说明已设粘滞位;若为 x 或 -,则尚未启用
- 注意大小写:t 表示有执行权 + 粘滞位(有效),T 表示无执行权 + 粘滞位(无效,other 用户进不去目录)
两种可靠设置方式
推荐根据使用场景选择:
-
日常手动配置用
chmod +t:语义清晰、不覆盖已有权限,命令简洁
例如:chmod +t /shared,之后ls -ld /shared应显示drwxrwxrwt -
初始化部署或需精确权限时用四位八进制数:
•chmod 1777 /shared:全用户可读写执行 + 粘滞位(适合/tmp类完全开放场景)
•chmod 1755 /shared:owner/group 可读写执行,other 仅可读执行 + 粘滞位(适合协作但需限制写入的场景)
脚本与自动化中的关键细节
在批量部署或定时任务中,避免因权限缺失导致静默失败:
- 单独用
+t实际等价于o+t(仅对 other 添加),若目录原本没有 other 执行权(x),就会变成无效的 T - 更健壮的写法是组合命令:
chmod o+x /shared && chmod a+t /shared
先确保 other 可进入,再统一为所有用户类别(user/group/other)添加粘滞位 - 验证是否生效:
ls -ld /shared必须看到末位为小写 t
递归设置与长期防护
粘滞位不会自动继承,子目录需显式处理:
- 对已有结构批量启用:
chmod -R +t /shared(注意:该操作会把粘滞位也加到普通文件上,虽无效但无害) - 预防未来新建目录遗漏:不能靠 umask 直接设粘滞位,但可通过
mkdir -m 1775 /shared/newdir指定默认权限,或配合 SGID + 默认 ACL(setfacl -d)构建多层防护 - 定期抽查子目录:
ls -ld /shared/sub1 /shared/sub2,确认末位均为 t











