ACL 为什么会绕过常规检查
访问控制列表允许在常规的用户与用户组权限之外,为指定用户或组单独授权。这意味着一个文件的权限位看起来完全正常,实际却可能因为一条 ACL 条目而对某个账号开放。核查敏感目录与密钥文件时必须把 ACL 一并看:getfacl 输出中的具名 user 与 group 条目、mask 值以及目录上的 default 条目都是判断依据。ACL 的变更属于元数据写入,可以用审计规则监视关键路径来捕获操作者。
基本信息
| 命令 | getfacl 查看,setfacl 设置 |
|---|---|
| 关注对象 | 具名条目、mask 值、目录的 default 条目 |
| 基线 | 关键目录通常不需要额外 ACL 条目 |
| 监控方式 | auditd 监视敏感路径的属性变更 |
典型使用场景
- 检查敏感目录是否被额外授权给某个账号
- 排查权限位正常但访问被拒绝或意外允许的情况
- 确认备份恢复后 ACL 是否被重建
- 核对共享目录上的 default 条目对新建文件的影响
- 为访问控制整改提供现状清单
核查 ACL
核查 ACL
getfacl -p /etc/shadow /root/.ssh 2>/dev/null | head -30 # 关键文件与目录
getfacl -p /var/log/audit 2>/dev/null # 日志目录是否被额外授权
find /etc -maxdepth 2 -type f -newermt '-30 days' 2>/dev/null | head # 近期改动的文件
find / -xdev -type f -newermt '-7 days' -exec getfacl -p {} + 2>/dev/null \
| grep -E '^user:[^:]+:' | head -20 # 找出具名 ACL 条目
getfacl -d /srv/share 2>/dev/null | head -10 # 目录 default 条目getfacl 输出读法
| 行 | 含义 | 判读要点 |
|---|---|---|
| user:: | 文件属主的权限 | 与权限位一致属正常 |
| user:name: | 具名用户的额外授权 | 出现陌生账号需重点解释 |
| mask:: | 具名条目与组权限的上限 | mask 过宽会放大授权效果 |
| default: | 目录下新建文件的默认 ACL | 影响后续所有新文件 |
ACL 与基础权限叠加生效,判断实际访问能力要同时看权限位与 ACL 条目;只看 ls -l 的输出会得出错误结论。
备份恢复过程会重新生成 ACL,出现异常条目时先确认该目录是否经历过恢复操作,再判断是否属于人为授权。
清理 ACL 条目属于权限变更,操作后可能导致业务进程无法访问文件;处置前先记录原始输出并在测试环境验证影响。
目录上的 default ACL 会被之后新建的文件继承,因此只在父目录设一条宽松条目,实际影响范围会随时间不断扩大;核查共享目录时应把 default 条目当作长期风险而不是一次性配置。