有效权限在getfacl输出中体现为每条acl规则末尾的#effective:xxx,其实际值由mask::与用户/组权限“与”运算得出;mask是所有acl条目的生效上限,需手动调优确保覆盖所需权限。

直接用 getfacl 就能看到 effective 权限,它体现在输出中的 effective 字段(或通过 mask:: 与实际权限比对推导),而调优关键在于理解并合理设置 mask —— 它不是独立权限,而是 ACL 条目的“生效上限”。
有效权限在哪看?
执行 getfacl 文件名,输出中每条 ACL 规则末尾若带 #effective:xxx,就是该条目的实际生效权限。例如:
-
user:alice:rwx #effective:r-x→ alice 被授予 rwx,但因 mask 限制,真正能用的只有 r-x -
group:dev:rwx #effective:---→ dev 组虽被授权,但 mask 为 ---,这条完全不生效 -
mask::r-x这一行本身,就是当前所有 ACL 用户/组条目的最大允许权限边界
为什么 effective 权限会缩水?
根本原因是 mask 没有覆盖你给的权限。ACL 中所有非属主、非属组、非 other 的条目(即 u:xxx、g:xxx、d:u:xxx 等),其实际效果必须 ≤ mask。系统自动计算 mask 时,会取所有 ACL 条目中最高权限位的并集;但如果你手动设了过窄的 mask,就会压制其他条目。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 比如给 3 个用户分别加了 rwx、rw-、r-x,系统默认 mask 是 rwx
- 但你执行
setfacl -m m::rw- 文件,那 r-x 那条就变成 #effective:rw- - 再执行
setfacl -m u:bob:r-x 文件,bob 的权限也会被截断为 rw-
如何调优 mask 以确保权限按预期生效?
目标是让 mask ≥ 所有需要启用的 ACL 条目权限。常用操作:
- 查看当前 mask:
getfacl 文件 | grep "mask::" - 让 mask 自动适配所有现有 ACL 条目:
setfacl --mask -m m::rwx 目录(或省略 m::,直接setfacl --mask 目录,系统自动重算) - 若只需放宽到某一级别(如全部只读):
setfacl -m m::r-- 文件 - 对目录设默认 ACL 后,务必同步更新 mask:
setfacl -d -m u:dev:rwx 目录 && setfacl --mask 目录,否则新文件可能拿不到完整权限
验证 effective 是否已修正
改完 mask 后,再次运行 getfacl 文件,检查各条 ACL 后的 #effective: 是否与你期望的权限一致。如果仍显示受限,说明 mask 还不够宽,或该条目本身权限写错了(比如误写成 u:alice:rx 少了 -,实际是 r-x)。










