ACL核心是绕过传统UGO三段式限制,在不改属主、不加组、不设777前提下,为特定用户或组精准授权并自动继承;需启用文件系统acl挂载选项,用setfacl -m设置权限、-d设置默认ACL,并通过umask与mask协同确保权限准确落地。

Linux 中用 ACL 解决多用户协同办公权限,核心是绕过传统“所有者-组-其他人”三段式限制,在不改文件属主、不拉人进组、不开放 777 的前提下,给特定人或组精准授权,并让新文件自动继承规则。
确认并启用文件系统 ACL 支持
ACL 不是内核开关,而是挂载选项。即使系统自带支持,也得验证当前分区是否真启用了 acl:
- 运行 mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,输出含 acl 才算生效
- 若无输出,临时启用:sudo mount -o remount,acl /shared
- 永久生效:编辑 /etc/fstab,在对应分区的 options 字段追加 acl(如 defaults,acl),再执行 sudo mount -o remount /shared
为不同角色单独设置访问权限
协作目录里常有开发、测试、外包、运维等多类人员,ACL 允许互不干扰地分别授权:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 给外包人员 alice 读写执行权限:setfacl -m u:alice:rwx /project
- 给测试组 qa 只读+进入目录权限:setfacl -m g:qa:r-X /project(大写 X 更安全,只对目录或已有 x 的文件加执行)
- 一次设置多个主体:setfacl -m u:carol:rw-,g:devteam:rwX,g:nginx:r-- /var/log/app
- 执行后用 ls -ld /project 查看,权限末尾出现 +(如 drwxrwxr-x+)说明 ACL 已存在
配置默认 ACL 实现新建文件自动继承
协作目录的关键不是“现在能用”,而是“新人进来、新文件创建后依然好用”。默认 ACL 就是这个保障:
- 命令格式:setfacl -d -m u:用户名:权限,g:组名:权限 /path
- 例如:setfacl -d -m u:alice:rwX,g:devteam:rwx,g:qa:r-X /project
- 执行后用 getfacl /project 查看,确认输出中有以 default: 开头的条目
- 注意:-d 只影响后续新建的文件和子目录,不影响已有内容
确保权限真正落地的两个关键点
设了默认 ACL ≠ 新建文件一定有权限,中间还有 umask 和 mask 两道过滤:
- umask:建议统一设为 002(文件 664,目录 775)。可在 /etc/profile 或用户 ~/.bashrc 中添加 umask 002
- mask:它是所有命名用户/组权限的“天花板”。getfacl 输出中的 mask:: 行就是实际生效上限。若发现某人权限被截断,可用 setfacl --recompute-mask /project 自动重算,或手动收紧:setfacl -m m::rwx /project

















