首页/安全/安全加固速查//tmp 与 /var/tmp 粘滞位(1777)
主机加固基线90 条

/tmp 与 /var/tmp 粘滞位(1777)

共享临时目录必须带粘滞位(drwxrwxrwt):人人可建文件,但只能删除自己的;缺粘滞位时任意用户可删除或替换他人文件,可被用于本地提权。

安全加固速查安全更新于 2026-10-13

粘滞位挡住的是什么

共享临时目录必须带粘滞位,表现为 drwxrwxrwt(权限 1777):任何用户都能在里面建文件,但只有文件属主、目录属主或 root 能删除和改名他人的文件。少了这个 t,任何本地用户都能删掉或替换别人的临时文件——典型的利用方式是替换 root 定时任务、安装程序或脚本写下的临时文件,从而在后续以更高权限执行时接管流程。

基本信息

加固项所有全局可写目录设置粘滞位
适用平台Linux(RHEL/CentOS、Debian/Ubuntu)
权限要求root
基线值/tmp、/var/tmp 为 1777(drwxrwxrwt)
扩展范围SHM 目录、应用自建共享目录同样适用

典型使用场景

  • 系统基线巡检,逐项检查全局可写目录的粘滞位
  • 应用上线前核查其自建共享目录(如上传临时目录)
  • 从旧系统迁移目录结构后,tar 解包常丢失粘滞位
  • 排查本地提权事件时确认是否出现过可被替换的共享文件
  • 容器镜像构建后检查 /tmp 的权限设置是否被改坏

核查:找缺粘滞位的全局可写目录

核查:找缺粘滞位的全局可写目录
ls -ld /tmp /var/tmp   # 期望 drwxrwxrwt 开头
find / -xdev -type d -perm -0002 ! -perm -1000 -print 2>/dev/null   # 全局可写但无粘滞位
findmnt /tmp   # 确认 /tmp 是否被挂成 tmpfs,重启清空的语义不同

修复

修复
chmod 1777 /tmp /var/tmp       # 注意 1 不能丢,漏写只得到 777
chmod +t /path/to/shared_dir   # 保留原权限只加粘滞位的写法
ls -ld /tmp /var/tmp           # 复核末尾是否为 t

权限末尾字符读法

显示数值含义与风险
drwxrwxrwt1777有粘滞位,达标
drwxrwxrwx777无粘滞位,任何用户可删他人文件
drwxrwxrwx+777+ACL带 ACL,需 getfacl 确认实际授权
drwxrwx--T1770有粘滞位但组内可写,仍要评估组范围
发现共享目录缺粘滞位时,先恢复权限再追溯:目录可写且无粘滞位期间,攻击者可以替换脚本、配置文件或定时任务文件。做完权限修复还应检查期间被写入的脚本内容,而不是修完就结案。
现代发行版常把 /tmp 挂成 tmpfs,重启即清空:好处是残留物少,代价是入侵痕迹与故障现场不易留存。若业务需要保留临时文件做审计,应改用独立分区并配套清理策略(如 systemd-tmpfiles)。

易错点

  • chmod 时漏写 1,只得到 777,看似“改过了”其实更糟,必须复核末尾是否为 t
  • 只检查 /tmp 与 /var/tmp:应用自建的上传、缓存、会话目录同样可能是全局可写目录
  • tar、rsync 同步目录时忘记带权限信息(-p / -a),迁移后粘滞位悄悄丢失
  • 把粘滞位当成访问控制:它只限制删除与改名,不限制读,敏感数据仍不应放在共享临时目录

数据来源与参考

  • CIS Linux Benchmark:Ensure sticky bit is set on all world-writable directories
  • sticky(7) 手册(Linux)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌