全局可写有什么问题
全局可写指权限位末位带 w,任何用户都能写入。除 /tmp、/var/tmp 这类带 sticky 位的公共目录外,业务目录出现全局可写基本都是隐患:目录没有 sticky 位时任何用户都能删除其中他人的文件,可用来破坏服务或替换被引用的文件。核查重点放在业务目录、Web 根目录与上传目录上。
基本信息
| 适用平台 | Linux |
|---|---|
| 关键权限位 | -0002 表示其他人可写,末位 t 为 sticky 位 |
| 风险等级 | 中 |
| 判读标准 | 业务目录出现全局可写即为整改项 |
| 常见例外 | 带 sticky 位的公共目录 /tmp、/var/tmp |
典型使用场景
- Web 根目录与上传目录被 webshell 利用后的排查
- 权限基线核查,找出非预期的全局可写项
- 排查服务被未知用户破坏(文件被删改)的原因
- 容器镜像构建完成后做权限检查
- 多用户主机上确认公共目录是否都带 sticky 位
核查命令
核查命令
find / -xdev -type d -perm -0002 -not -path '/tmp/*' -not -path '/var/tmp/*' 2>/dev/null | head -30 # 排除公共目录后的可写目录
find / -xdev -type f -perm -0002 -not -path '/tmp/*' 2>/dev/null | head -30 # 全局可写的文件
ls -ld /tmp /var/tmp # 确认公共目录是否带 t 位(sticky)
getfacl /path/to/dir 2>/dev/null | head # 查看 find 看不到的 ACL 写权限输出逐列读法
| 列 | 含义 | 判读 |
|---|---|---|
| 末位 w | 其他人对该文件或目录可写 | 业务目录出现即为整改项 |
| 末位 t | sticky 位,只能删自己的文件 | 公共目录应当具备 |
| 属主与属组 | 文件的归属 | 属主为普通用户却在系统目录需警惕 |
| 路径 | 文件所在位置 | Web 根与上传目录优先级最高 |
| ACL 条目 | 额外授予的写权限 | 需要 getfacl 才能看到 |
全局可写的上传目录是 webshell 落地与横向传播的常见温床,Web 根目录下出现这类目录要优先整改。
find 的 -perm -0002 只看传统权限位,ACL 授予的写权限它看不到:关键目录要用 getfacl 抽查,别以为 find 没有输出就万事大吉。
排查顺序建议从 Web 根目录、上传目录、定时任务与启动脚本所在目录开始:这些位置一旦全局可写,直接对应到可被执行或被替换的风险。