全局可写意味着什么
文件带全局可写位(其他用户可写)时,任何本地账号都能修改它。放在普通数据目录里影响面有限,但一旦落在配置、脚本或服务相关路径上,普通用户就能通过替换内容间接影响以 root 身份运行的程序,进而提权。目录的全局可写同样危险:它决定别人能不能往里塞文件。核查的目标很明确,排除 /tmp、/var/tmp 这类预期目录后,全局可写项应该清零。
基本信息
| 加固项 | 消除非预期的全局可写文件与目录 |
|---|---|
| 适用平台 | Linux(RHEL/CentOS/Debian/Ubuntu) |
| 风险等级 | 高 |
| 检查点 | 排除预期路径后无 -perm -0002 结果 |
| 检查范围 | 文件与目录分开检查,口径不同 |
典型使用场景
- 基线核查:给出「无非预期全局可写文件」的结论与输出
- 部署事故排查:部署脚本用宽松 umask 跑过之后,权限常被写宽
- 入侵排查:攻击者在可写目录落马或替换脚本是常见手法
- 临时目录治理:确认 /tmp 与 /var/tmp 有正确的粘滞位保护
- 文件服务器加固:共享目录的写权限范围需要按业务核对
核查命令
核查命令
find / -xdev -type f -perm -0002 -print 2>/dev/null | grep -vE '^/(tmp|var/tmp)/' | head -50
find / -xdev -type d -perm -0002 ! -perm -1000 -print 2>/dev/null | head -50
find /var /etc /usr /opt -type f -perm -0002 -print 2>/dev/null | head -30 # 重点目录
ls -ld /tmp /var/tmp # 确认粘滞位存在两类检查对照
| 对象 | 写法要点 | 说明 |
|---|---|---|
| 全局可写文件 | -type f 配合 -perm -0002 | 命中即可被任意账号改写内容 |
| 全局可写目录 | -type d 配合 ! -perm -1000 | 无粘滞位的可写目录可被任意账号增删文件 |
| 预期目录 | grep 排除 /tmp 与 /var/tmp | 这些目录本身需要可写,重点是确认有粘滞位 |
| 扫描范围 | 先加 -xdev 限定本分区 | 避免扫进网络挂载拖慢执行,多分区要分别跑 |
在 /etc、/usr、/var/spool 下出现全局可写文件要立即排查,这类路径上的可写文件几乎都能与提权建立联系。修复用 chmod o-w 去掉写位,但动手前先确认属主与业务用途,避免把共享文件服务所需的写权限一并砍掉。
粘滞位(-perm -1000)的含义是:目录虽可写,但只有文件属主、目录属主或 root 能删除其中的文件。所以 /tmp 通常同时具备全局可写与粘滞位,这是正常设计;缺少粘滞位才是问题,它会让任意账号能够删除他人的临时文件。
判定与处置顺序
先按路径分类再决定动作:/tmp 与 /var/tmp 属预期,重点看粘滞位;/etc、/usr、/var/spool 属重点,逐项核实;业务数据目录按用途判断。处置顺序建议是从配置与服务脚本开始,再到普通数据文件。改完重跑同一条命令确认结果收敛,并把两份输出一起归档,形成「发现到整改」的完整记录。