ACL可实现多用户安全协作:需先启用文件系统acl选项、安装setfacl/getfacl工具,再用-d -m设置默认ACL使新文件自动继承权限,同时注意mask掩码限制实际生效权限。

要让多个用户在同一个目录里安全地读写协作,关键不是放宽权限,而是用 ACL 做精准授权——不改属主、不碰主组、不依赖 777,还能自动继承、按需隔离。
先确认系统已支持 ACL
ACL 不是默认“开箱即用”,得先检查底层是否就绪:
- 运行 mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,看到 acl 字样说明已启用
- 若无输出,需编辑 /etc/fstab,在对应分区挂载参数中加入 acl(如 defaults,acl),再执行 sudo mount -o remount /
- 确保工具可用:which setfacl getfacl;缺失则装:Ubuntu/Debian 用 sudo apt install acl,RHEL/CentOS 用 sudo yum install acl
为协作目录设置默认 ACL(核心步骤)
只设一次,后续所有新建文件/子目录自动获得预设权限,省去反复授权:
- 假设共享目录是 /srv/project,想让 alice 可读写、bob 只读、devteam 组可读写、qa 组仅可读可进入
- 执行:setfacl -d -m u:alice:rwX,u:bob:r--,g:devteam:rwX,g:qa:r-X /srv/project
- 注意:X(大写)比 x 更安全——只在目标是目录或已有执行权时才加执行位
- 验证:getfacl /srv/project 应显示 default: 开头的条目;新建文件后用 getfacl 查看,会发现权限已自动套用
处理已有内容与权限掩码(mask)
默认 ACL 不影响已有文件,且实际生效受 mask 约束:
- 对已有内容批量补 ACL:setfacl -R -m u:alice:rwX,u:bob:r--,g:devteam:rwX,g:qa:r-X /srv/project
- 执行后运行 getfacl /srv/project,留意 mask::rwx 行——它就是所有命名用户/组权限的“天花板”
- 如果某人被设了 rw-,但 mask 是 r--,那最终只有读权限;可手动收紧:setfacl -m m::r-- /srv/project
- 修改任意 ACL 条目后,mask 通常自动重算;如需强制同步,部分系统支持 setfacl --recompute-mask
附加防护:防误删与临时授权
协作中常见风险是误删他人文件,或需快速加/减权限:
- 启用粘滞位(sticky bit)防止非属主删除:chmod +t /srv/project → 权限末位变 T 或 t(取决于 group 是否有 x)
- 给外包人员短期只读:setfacl -m u:vendor:r-x /srv/project
- 收回权限只需一条:setfacl -x u:vendor /srv/project,或清空全部扩展 ACL:setfacl -b /srv/project
- 查看是否生效:用 ls -ld /srv/project,末尾出现 + 表示 ACL 已配置;用 getfacl 查细节











