直接用 setfacl -m g:组名:权限 可为指定用户组添加 ACL 权限,无需改属组且不影响其他用户;需先确认组存在、文件系统启用 ACL,再执行授权、设默认 ACL、查看或清理。

直接用 setfacl -m g:组名:权限 命令就能为指定用户组添加 ACL 权限,不需要改文件属组,也不影响其他用户。
确认目标组存在且文件系统支持 ACL
先确保你要授权的组真实存在:getent group 组名 或 compgen -g | grep 组名
再检查当前分区是否启用 ACL(多数现代系统默认开启):mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl
没输出就说明未启用,需临时挂载:sudo mount -o remount,acl /
长期生效要编辑 /etc/fstab,在对应行 options 字段加 acl。
给组添加 ACL 权限(基础用法)
语法统一为:setfacl -m g:组名:权限 目标文件或目录,权限用 r、w、x 组合:
- 让组
devs对script.sh可执行:setfacl -m g:devs:x script.sh - 让组
qa对整个tests/目录可读写(含子项):setfacl -Rm g:qa:rwX tests/(注意大写X:对目录自动加 x,对普通文件仅当已有 x 时才加) - 同时授权多个组:
setfacl -m g:devs:rx,g:ops:r-- config.yml
让新创建的文件也继承该组权限(设默认 ACL)
默认 ACL 只对目录有效,它控制未来新建内容的初始权限:
- 设置目录
shared/的默认规则,使新文件默认对组team-a可读:setfacl -m d:g:team-a:r shared/ - 新创建的子目录会自动获得
r-x,新文件获得r--(因目录默认不给新文件 w 权限) - 若想新文件也可写,得显式加 w:
setfacl -m d:g:team-a:rw shared/,但注意 mask 会限制最终生效权限
查看和清理组 ACL
查权限用 getfacl 文件名,输出里带 group:组名:权限 行就是你设的;ls -l 显示末尾有 + 表示存在 ACL。
- 删掉某组的 ACL 条目:
setfacl -x g:组名 文件名 - 清空所有 ACL(保留基本 u/g/o 权限):
setfacl -b 文件名 - 只删默认 ACL(不影响现有条目):
setfacl -k 目录名


















