粘滞位是linux共享目录安全的底线,设置后仅文件所有者、目录所有者或root可删除文件;用chmod +t可直接启用,生效时权限末位显示小写t,且仅对目录有效。

粘滞位不是可选功能,而是共享目录安全的底线——不加它,任何有写权限的用户都能删掉别人创建的文件。
chmod +t 是最直接有效的设置方式
符号模式 chmod +t 专为粘滞位设计,语义清晰、不易出错,且只作用于目录(对文件设置无效)。它不会覆盖已有权限,仅追加粘滞位标志。
- 执行前先确认目标是目录:
ls -ld /shared,确保输出以d开头 - 运行
chmod +t /shared,无需指定用户或组范围 - 验证是否生效:
ls -ld /shared,末位应显示为小写t(如drwxrwxrwt);若显示大写T,说明目录缺少 other 执行权限(x),需先补上:chmod o+x /shared - 注意:该命令不递归,子目录不会自动继承
1777 和 1755 这类四位八进制数怎么选
粘滞位对应八进制最高位的 1,所以必须用四位数。选择取决于你对“其他用户”(other)的实际访问需求:
-
chmod 1777 /shared:给所有用户 rwx 权限 + 粘滞位,典型用于/tmp类场景,适合完全开放但需防误删的环境 -
chmod 1755 /shared:owner/group 有 rwx,other 只有 rx,加粘滞位。适合希望限制 other 写入、但仍允许其浏览和进入目录的协作场景 - 不要用
1770或1760:other 没有执行位(x)时,粘滞位虽设上,但 ls 显示为大写T,且 other 用户根本无法进入目录,失去共享意义
为什么 a+t 比 +t 更适合脚本部署
在自动化脚本中,chmod a+t 明确声明“对所有用户(all)添加粘滞位”,避免因 umask 或当前 shell 权限上下文导致行为歧义。
-
chmod +t实际等价于chmod o+t(仅对 other 添加),而a+t覆盖 user/group/other 全部三类,语义更完整 - 当目录权限被人为收紧(比如已执行过
chmod 750),仅用+t可能因 other 无 x 权限而静默失败(末位显示T),a+t配合o+x更易写出健壮逻辑 - 示例脚本片段:
chmod o+x /shared && chmod a+t /shared
递归设置和 umask 预设的区别在哪
递归(-R)是补救手段,umask 是源头控制——两者解决的是不同时间点的问题。
-
chmod -R +t /shared:适用于已有大量子目录的存量环境,但要注意它会把粘滞位也打到普通文件上(无效但无害),且不能保证未来新建目录自动带上 - umask 本身不能直接设置粘滞位,但可配合
mkdir -m 1775或 shell 函数封装,让新建目录默认带粘滞位;更可靠的做法是结合 SGID + 默认 ACL(setfacl -d)+ 定期 chmod -R,形成多层防护 - 真正容易被忽略的是:粘滞位必须与目录写权限共存才有意义。如果为了“安全”把 other 的 w 去掉,又不加粘滞位,那只是回归到“谁都写不了”的僵局,而非“谁都能写但只能删自己的”可用状态











