ACL中Named User和Named Group按UID/GID数字精确匹配而非名称:Named User比对进程有效UID,Named Group比对进程有效GID及附加组GID;二者与基本权限叠加,受mask限制。

ACL 中的 Named User 和 Named Group 不是“登录名匹配”,而是按 UID/GID 数字精确匹配。
Named User 的匹配逻辑
Named User 条目(如 user:zhangsan:r-x)在内核权限检查时,会查出 zhangsan 对应的 UID(比如 1001),然后比对当前进程的有效 UID 是否等于该值。不是字符串比对,不关心用户名是否拼写一致或大小写,只看数字是否吻合。
- 如果用户被删除但 UID 仍保留在文件 ACL 中,该条目依然生效——只要某个进程以该 UID 运行,就命中这条规则
- 同一个 UID 被多个用户名共享(比如通过修改 /etc/passwd 人为设为相同 UID),所有对应账户都会受同一条 Named User 规则约束
- UID 为 0 的用户(root)始终绕过 ACL 检查,直接拥有完全访问权,Named User 条目对 root 不起作用
Named Group 的匹配逻辑
Named Group 条目(如 group:developers:rw-)匹配的是进程的**有效 GID + 附加组 GID 列表**。只要进程的任一 GID 与该组的 GID 相等,即视为命中。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 注意:仅检查 GID,不验证该 GID 当前是否在 /etc/group 中存在,也不校验组名是否还有效
- 用户登录后所属的组列表由 /etc/group 和 /etc/gshadow 共同决定,但 ACL 匹配阶段只读取进程已加载的 GID 集合(可通过
id -G查看) - 如果某组被删除(
groupdel),但其 GID 仍残留在 ACL 中,且恰好有进程带着这个 GID(例如旧会话未退出、或手动用sg切换),规则依旧生效
和传统权限的协作关系
ACL 不替代基本权限,而是叠加判断。系统按顺序检查:Owner → Named User → Group / Named Group → Other。一旦某类匹配成功,就用对应权限掩码参与最终权限计算;未匹配则跳过。所有匹配项的权限位会通过“按位或”合并,再与基本权限掩码(mask)做“按位与”,得出实际生效权限。
- mask 条目控制 Named User/Group 权限的上限,即使 ACL 写了 rwx,若 mask 是 r--,最终最多只有读权限
- Named User 和 Named Group 条目互不影响,可共存;同一用户既命中 Named User 又属于 Named Group 时,两者的权限会合并
排查匹配问题的实用方法
遇到权限不符,先确认运行进程的真实身份:
- 用
id -u和id -g -G查当前 shell 的 UID/GID 列表 - 用
getfacl 文件名看 ACL 定义,特别注意 mask 值和各条目的 GID/UID 数字(加-n参数可显示数字而非名称) - 用
ls -l看基本权限和属主属组,排除基础权限拒绝的可能

















