Linux中设置目录粘滞位需先确保其他用户有执行权限(o+x),再用chmod +t或四位八进制数(如1777)启用,使末位显示小写t,从而限制非属主用户删除他人文件。

要在 Linux 中设置目录粘滞位来防止非属主用户删除他人文件,关键不是“禁止删除”,而是让只有文件所有者、目录所有者或 root 才能删——哪怕目录权限是 777。粘滞位只对目录生效,且必须配合执行权限(x)才起作用,否则显示为大写 T,实际无效。
确认前提:目录必须有其他用户执行权限
粘滞位依赖目录的“执行”权限(即进入目录的权限)。若目录权限是 drwxrwxrw-(末位无 x),即使加了 sticky bit,也会显示为 T,不生效。正确做法是先确保 other 有 x 权限:
- 检查当前权限:
ls -ld /path/to/dir - 若末位不是 x 或 t,先补上:
chmod o+x /path/to/dir - 再设置粘滞位,才能显示为小写 t
用 chmod +t 快速启用粘滞位
这是最常用、最安全的方式,符号模式不易出错,且只改动 sticky bit,不影响原有读写权限:
- 添加粘滞位:
chmod +t /shared - 验证结果:
ls -ld /shared→ 应显示类似drwxrwxrwt - 取消粘滞位:
chmod -t /shared
用四位八进制数精确设定权限
适合需要一步到位配置完整权限的场景。粘滞位对应最高位的 1,所以必须用四位数(如 1755、1777):
- 全开放+粘滞位:
chmod 1777 /tmp→drwxrwxrwt - 属主/属组可读写执行,其他仅读执行+粘滞位:
chmod 1775 /uploads→drwxrwxr-x变为drwxrwxr-t - 注意:三位数(如 777)会清除 sticky bit;必须用四位数才能保留它
批量设置子目录粘滞位
已有深层目录结构时,需递归应用,因为粘滞位不自动继承:
- 命令:
chmod -R +t /project/shared - 执行后抽查任意子目录:
ls -ld /project/shared/logs,确认末位为 t - ⚠️ 警告:
-R会影响所有子目录,但不会改动文件(sticky bit 对文件无效),相对安全


















