acl权限失效多因mask截断:getfacl中出现#effective:r--或#effective:---即表明mask过严,需用setfacl -m m::rwx等命令显式修复,且添加acl后应检查并钉牢mask。

ACL 用户设了写权限却写不了,十有八九是 mask 自动收缩“拦住了”实际权限。它不报错、不提示,只默默把你的 rwx 截成 r--,问题藏得深但规律明确。
看 getfacl 输出里有没有 #effective
执行 getfacl /path/to/dir,重点扫一眼每条 ACL 后面是否跟着 #effective:xxx:
- 如果看到
user:jenkins:rwx #effective:r--,说明 mask 当前只有 r--,jenkins 的 w 和 x 被截断了 - 如果新创建的文件上,原本该继承的 default ACL 显示为
user:jenkins:rwx #effective:---,那也是 mask 过严,连默认权限都失效了 - 注意:mask 行本身在输出里是独立的一行,形如
mask::r--,它的值必须 ≥ 所有非 owner/group/others 条目的最大权限组合
查哪些操作可能悄悄改了 mask
mask 不是静态的,以下命令会触发系统自动重算(且通常不提示):
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- chmod g-w dir:降低组写位,常导致 mask 从 rwx 降为 r-x 或 r--
- setfacl -x u:jenkins /dir:删掉某条 ACL 后,系统可能收缩 mask,但行为不保证,不可依赖
- setfacl -m g:devs:rx /dir:给组加权限时若超出当前 mask,系统默认会提升 mask;但若之后又删或改其他条目,mask 可能回落
修复只需一条 setfacl 命令
不用猜、不用删 ACL,直接显式重设 mask:
- 想让所有已设 ACL 全部生效,就设成最宽松需要的权限:setfacl -m m::rwx /path
- 如果只要读写不要执行,用 setfacl -m m::rw- /path
- 对目录还要考虑默认 ACL 继承,递归修复可加 -R;设默认 mask 则补 -d,例如:setfacl -dm m::rwx /path
预防 mask 失效的两个习惯
运维中容易忽略,但能省下大量排查时间:
- 每次用 setfacl -m 添加新用户/组权限后,顺手跑一遍 getfacl 确认没有 #effective 出现
- 批量修改权限(比如 chmod +w 后跟 setfacl)时,最后统一执行一次 setfacl -m m::rwx,把 mask “钉死”在所需强度










