记录一下那天晚上的排查过程。CentOS 7 上迁移家目录,用 getfacl 导出再 setfacl –restore 还原,之后安全扫描报某目录组权限为 rwx,getfacl 里 mask 一行是 rwx 而实际只需要 r–。

刚开始盯着「原始 ACL 里没有显式 mask,恢复时按最大权限自动推导」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。setfacl 修改命名用户条目时会重算 mask,把组权限一并放开。也可能是restore 的顺序是先加条目后设 mask,中间状态被其他进程读取到。

另外,rsync -A 带过去的是条目而 mask 由目标端重算,两端文件系统特性不同。

上来先看现有 ACL 与 mask

getfacl -p /home/dev01

然后按最小权限显式设定 mask

setfacl -m m::r-x /home/dev01

随后用带 mask 的完整清单重新恢复

getfacl -R /backup/home > /root/home.acl && setfacl --restore=/root/home.acl

等前面都确认过,再确认有效权限与预期一致

getfacl -p /home/dev01 | grep -E 'mask|group'

怎么算真的好了,看的是同一批现象。getfacl 输出里 mask 为 r-x 且 effective 权限符合预期,安全扫描不再报该目录组权限过宽,应用账号读写行为与迁移前一致。

mask 是 ACL 里最容易漏的一项,它会把所有命名条目和属组权限一起裁剪;改完一定要重跑一次扫描,别只看条目对不对。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189