全局可写文件排查
权限位里给「其他人」开了写权限(o+w,权限掩码 0002)的对象,任何本地账户都能改写,是未授权篡改与提权链路的常见入口。等保核查与日常巡检都会扫这类文件。做法是用 find 按权限位过滤,配合 -xdev 避免落入 /proc、/sys、/dev 等伪文件系统,把结果逐条确认后收敛权限。目录还要看粘滞位(t)是否存在。
基本信息
| 适用平台 | 全部 Linux 发行版 |
|---|---|
| 权限位表示 | o+w 对应 find 的 -perm -0002(- 表示至少包含该位) |
| 扫描范围 | 加 -xdev 限定在单个文件系统,避免扫伪文件系统 |
| 常见例外 | /tmp 与 /var/tmp 依赖粘滞位,属设计如此 |
| 修复命令 | chmod o-w 目标,目录同时确认粘滞位 |
典型使用场景
- 等保与安全巡检:作为访问控制核查项,输出不合格清单并整改
- 应急排查:怀疑被植入后门或篡改配置时,先扫全局可写点缩小范围
- 交付验收:新装系统批量扫描,避免遗留测试期间放开的权限
- 应用上线检查:确认上传目录、缓存目录的放开范围是否必要
- 定期基线巡检:按周或按月输出差异,观察权限漂移
扫描与修复
扫描与修复
find / -xdev -type f -perm -0002 -print 2>/dev/null | head -50 # 扫全局可写文件
find / -xdev -type d -perm -0002 -print 2>/dev/null | head -50 # 扫全局可写目录
find / -xdev -type f -perm -0002 -ls 2>/dev/null | head -20 # 带属性输出,便于判断
# 排除已知例外后继续扫:
find / -xdev -path /tmp -prune -o -type f -perm -0002 -print 2>/dev/null | head
ls -ld /tmp /var/tmp # drwxrwxrwt:粘滞位保证只能删自己的文件
chmod o-w /path/to/offending-file # 修复文件
chmod o-w /path/to/offending-dir # 修复目录结果判读
| 现象 | 含义 | 处理建议 |
|---|---|---|
| 普通文件 o+w | 任何用户可改写 | 确认非业务必需后 chmod o-w |
| 目录 o+w 无 t | 任何用户可删除他人文件 | chmod o-w,或保留 o+w 但补 +t |
| 目录 o+w 有 t | 仅属主可删自己文件 | /tmp 类设计,可保留并记录为已知项 |
| 属主为普通用户且全局可写 | 存在篡改风险 | 优先整改,确认是否人为放开 |
| 可执行文件 o+w | 可被替换为恶意程序 | 高风险,先收敛再排查变更历史 |
扫描不加 -xdev 会进入 /proc、/sys、/dev,输出大量与真实权限无关的记录,先把过滤条件写对再干活。
整改前先确认业务是否依赖写入(上传目录、共享目录、某些日志目录),直接 chmod 可能让应用当场报错。