ACL是解决Linux多用户共享权限问题最实用的机制,它不改文件属主和主组,可为每个用户或组单独授权、支持默认ACL自动继承、需确认文件系统启用acl选项、配合umask与mask确保权限准确落地。

ACL 是解决 Linux 多用户共享权限问题最实用的机制——它不改文件属主和主组,也不依赖“把所有人塞进一个组”这种粗放做法,而是直接为每个用户或组单独打权限补丁,还能让新文件自动继承规则。
先确认系统支持 ACL
ACL 不是内核开关,而是文件系统挂载选项。运行这行命令检查:
mount | grep "$(df . | tail -1 | awk '{print }')" | grep acl
如果输出里有 acl,说明已启用;没有就需临时挂载:
sudo mount -o remount,acl /shared
长期生效要编辑 /etc/fstab,在对应分区的 options 字段加上 defaults,acl,再重挂载。
给不同用户/组设独立权限
比如项目目录 /shared/project 属于 devteam 组,现在要让外包人员 alice 可读写、测试员 bob 只读、运维组 ops 可读可执行:
- setfacl -m u:alice:rwx,g:ops:r-x,u:bob:r-- /shared/project
- 执行后 ls -ld /shared/project 权限末尾会显示 +,表示 ACL 已生效
- 用 getfacl /shared/project 查看,能清晰看到每条规则归属谁、权限是什么
让新文件自动继承权限
协作目录最怕“每次新建文件都要重新授权”。用默认 ACL 解决:
- setfacl -d -m u:alice:rwx,g:devteam:rwx /shared/project
- 这条命令只影响后续新建的文件和子目录,不影响已有内容
- 新建文件权限还受 umask 影响,建议统一设为 002(即文件默认 664、目录 775)
- 验证:切换到 alice 用户,在目录下 touch test.txt && mkdir testdir,再 getfacl 看是否带 user:alice 条目及 default 块
控制权限实际生效上限(mask 很关键)
ACL 设了 rwx ≠ 用户真能 rwx,中间还有 mask 这道闸门:
- getfacl 输出里的 mask::rwx 行就是当前上限
- 如果某用户明明设了 rwx,却只能读,大概率是 mask 被压窄了(比如变成 r--)
- 手动修复:setfacl -m m::rwx /shared/project,或用 setfacl --recompute-mask 自动重算


















