Linux ACL 通过为特定用户或组单独授权,补充传统三元权限模型;需文件系统支持并挂载时启用 acl 选项;用 setfacl/getfacl 管理访问与默认 ACL,ls -l 显示 + 表示存在扩展 ACL;支持增删、递归及备份清理。

Linux 使用 ACL(访问控制列表)实现精细化文件访问控制,核心是绕过传统“所有者/属组/其他人”三元权限的限制,为特定用户或组单独授权。它不是替代 chmod,而是补充——在协作复杂、权限需求多样的场景下尤其必要。
确认并启用 ACL 支持
ACL 功能依赖底层文件系统支持(ext4/xfs 默认启用),但需确保挂载时启用了 acl 选项:
- 检查当前挂载是否含 acl:
mount | grep " $(df . | tail -1 | awk '{print $1}') ",输出中应出现 acl - 若未启用,临时启用:
sudo mount -o remount,acl / - 永久生效:编辑
/etc/fstab,在对应分区的挂载选项中加入 acl(如defaults,acl),再执行sudo mount -o remount /
查看和设置基础 ACL 规则
用 getfacl 查看当前权限结构,用 setfacl 添加或调整规则:
- 给用户 alice 对 file.txt 的读写权限:
setfacl -m u:alice:rw file.txt - 给组 devs 对 dir/ 的读+执行(进入目录)权限:
setfacl -m g:devs:r-x dir/ - 查看效果:
getfacl file.txt,会显示类似user:alice:rw-的条目 - 注意:ACL 生效后,
ls -l显示权限末尾会多一个 +(如-rw-rw-r--+),表示存在扩展 ACL
设置默认 ACL 实现自动继承
对目录设置默认 ACL,能让其下新建的文件/子目录自动获得指定权限,避免每次手动赋权:
- 让新创建的文件/目录默认对 group1 可读写:
setfacl -d -m g:group1:rw dir/ - 同时设用户和组的默认规则:
setfacl -d -m u:user2:rwx,g:team:r-x dir/ - 默认 ACL 仅影响新建项,不影响已有内容;递归设置需额外加
-R(慎用,可能覆盖已有权限)
管理与清理 ACL 权限
ACL 规则可增可删,操作需明确目标,避免误清:
- 删除某用户的 ACL 条目:
setfacl -x u:alice file.txt - 清除所有扩展 ACL(保留基础 owner/group/others 权限):
setfacl -b file.txt - 仅删除默认 ACL(不碰访问 ACL):
setfacl -k dir/ - 递归清理整个目录树:
setfacl -bR dir/(建议先getfacl -R dir/ > acl-backup.txt备份)


















