为用户组配置ACL权限需用setfacl -m g:组名:权限,确保文件系统启用acl、权限符号正确(如大写X)、mask未被压低;默认ACL(-d)可使新文件自动继承,且仅对目录生效。

Linux 中为用户组配置 ACL 权限,核心是用 setfacl -m g:组名:权限 直接授权,不改文件属组、不依赖 777,还能配合默认 ACL 实现新文件自动继承。关键在三点:文件系统真启用了 acl、权限符号选对(尤其大写 X)、mask 没被意外压低。
确认文件系统已启用 ACL 支持
ACL 不是装了工具就行,必须挂载时带 acl 选项:
- 运行
mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,输出含acl才算生效 - 若无输出,临时启用:
sudo mount -o remount,acl /shared(把/shared换成你的目录路径) - 永久生效需编辑
/etc/fstab,在对应分区的 options 字段加acl,例如:UUID=xxx /shared ext4 defaults,acl 0 2
给用户组添加具体 ACL 条目
用 -m 参数直接为组赋权,互不干扰,也不影响原有属组:
- 给组
devteam对目录/project赋予读写执行:setfacl -m g:devteam:rwx /project - 对整个目录树递归授权(含子目录和文件):
setfacl -Rm g:qa:rwX /tests/(注意大写X:只对目录或已有执行位的文件加x,更安全) - 同时设多个组:
setfacl -m g:devteam:rwx,g:ops:r-x /config/
执行后 ls -l /project 权限末尾会出现 +,表示存在扩展 ACL;用 getfacl /project 可看到类似 group:devteam:rwx 的条目。
设置默认 ACL 让新文件自动继承组权限
仅对目录有效,确保后续新建内容无需重复操作:
- 命令格式:
setfacl -d -m g:组名:权限 /dir - 例如:
setfacl -d -m g:devteam:rwX,g:qa:r-X /project→ 新建文件自动有 devteam 读写、qa 只读;新建目录自动有执行位 - 注意:
-d不影响已有文件,只管将来;且默认 ACL 本身不会改变 umask 过滤行为
检查 mask 是否限制了实际效果
mask 是命名用户/组权限的“天花板”,它可能让已设的权限无法真正生效:
- 用
getfacl /project查看mask::行,比如显示mask::r--,那即使你设了g:devteam:rwx,实际也只体现为r-- - 通常
setfacl -m会自动更新 mask,但如果手动改过 chmod 或之前设过 tight mask,可强制重算:setfacl --recompute-mask /project - 验证是否生效:切换到该组成员用户,
touch test.txt && mkdir testdir,再分别getfacl test.txt和getfacl testdir,确认出现对应组条目且权限正确


















