acl权限模型可突破传统ugo三段式限制,为多用户多组提供独立权限,不改属主属组、无需777,通过扩展规则实现安全灵活管控;需启用文件系统acl选项、安装setfacl/getfacl工具,用-m设置用户/组权限、-d设置默认acl、-r递归应用,并注意mask掩码对实际权限的限制作用。

ACL 权限模型能突破传统 ugo 三段式权限的限制,让多个用户、多个组对同一文件或目录拥有各自独立的访问权限,特别适合跨团队协作、项目共享等场景。它不改变文件属主和属组,也不依赖开放宽松的 777 权限,而是通过扩展规则实现安全又灵活的控制。
确认并启用文件系统 ACL 支持
ACL 功能依赖底层文件系统挂载时启用 acl 选项:
- 运行
mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,若输出含acl(如rw,relatime,acl),说明已启用 - 若未启用,需编辑
/etc/fstab,在对应分区挂载参数中加入acl(例如:defaults,acl),再执行sudo mount -o remount /mount/point - 验证工具是否存在:
which setfacl getfacl;如缺失,用apt install acl(Debian/Ubuntu)或yum install acl(RHEL/CentOS)安装
为不同用户和组分别设置访问权限
使用 setfacl -m 可一次性为多个主体授权,互不干扰:
-
setfacl -m u:alice:rw-,u:bob:r--,g:devteam:rw-,g:qa:r-x config.ini→ alice 可读写,bob 只读,devteam 组可读写,qa 组可读可进入(若为目录) - 权限符号遵循 rwx,但注意:文件默认无执行位,
X(大写)更安全——仅当目标是目录或已有执行权时才添加 x - 执行后,
ls -l文件名右侧会出现+,表示存在扩展 ACL;用getfacl config.ini查看完整条目
配置默认 ACL 实现新文件自动继承
对协作目录设置 default ACL,确保后续新建内容无需重复授权:
-
setfacl -d -m u:alice:rwX,g:devteam:rwX,g:qa:r-X /project→ 所有在/project下新建的文件/子目录,自动获得这些权限 - 注意:
-d仅影响新对象,不影响已有内容;且 default ACL 仅对目录有效 - 实际生效还受用户
umask影响(如umask 002保证新建文件权限不被过度过滤),建议统一设置
理解掩码(mask)与权限实际生效逻辑
ACL 中的 mask 是关键“天花板”,它限制所有命名用户/组的最大有效权限:
- 执行
getfacl时,mask::rwx行显示当前上限;若某条目设为rwx但 mask 是r--,最终只体现为r-- - mask 自动计算为所有命名条目(user/group)权限的按位或;也可手动收紧:
setfacl -m m::r-- file.txt - 修改任意命名条目后,mask 可能自动更新;如需强制同步,可用
setfacl --recompute-mask(部分发行版支持)











