Linux默认ACL通过启用文件系统ACL支持、setfacl -d设置默认规则及合理配置umask,实现目录自动继承权限;需验证挂载选项含acl,设置default ACL后测试新文件权限是否生效。

在多用户开发环境中,仅靠传统文件权限(ugo)无法满足“谁能在哪个目录里做什么”的明确约束。ACL 提供的目录级强制访问控制,核心不是“加权限”,而是通过默认 ACL + 严格属主/属组 + 合理 umask 三者协同,让新创建内容从诞生起就自带身份边界。
确保文件系统真正启用 ACL 支持
ACL 不是开箱即用的功能,必须确认底层挂载选项含 acl:
- 运行
mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,若无输出,说明未启用 - 临时启用(以 /home 为例):
sudo mount -o remount,acl /home - 永久生效:编辑
/etc/fstab,在对应分区行的挂载选项中加入acl(如defaults,acl),再执行sudo mount -o remount /home
设置带身份约束的默认 ACL 规则
对协作目录(如 /srv/devteam)设置 default ACL,使所有新文件/子目录自动绑定访问身份:
- 只允许指定用户读写:
setfacl -d -m u:alice:rwX,u:bob:rwX /srv/devteam - 禁止其他用户访问:
setfacl -d -m o::--- /srv/devteam - 显式禁用 group 类别(避免继承自主组的宽松权限):
setfacl -d -m g::--- /srv/devteam - 验证是否生效:
getfacl /srv/devteam应显示以default:开头的完整条目
配合属主固化与 umask 控制权限起点
默认 ACL 只决定“能给谁加什么”,但新建文件的实际权限还受创建者 umask 和初始属主影响:
- 目录应由可信管理员创建并设为
root:devteam,再用chmod 770关闭 others,防止非 ACL 用户意外写入 - 所有开发用户统一配置
umask 007(写入 ~/.bashrc):确保新建文件默认权限为660(而非644),使 ACL 中的u:alice:rw不被 umask 过滤掉写权限 - 避免使用
chmod 777或开放 group 权限——这会绕过 ACL 的身份意图
验证与持续防护要点
配置后必须用真实操作验证,不能只看 getfacl 输出:
- 切换到 alice 用户,在 /srv/devteam 下执行:
touch test.conf && mkdir testmod - 检查
getfacl test.conf:应有user:alice:rw-条目,且无 group/others 有效权限 - 检查
getfacl testmod:除基础权限外,还应显示完整的default:条目,证明继承机制激活 - 定期用
find /srv/devteam -type d ! -readable -o ! -writable 2>/dev/null | head -5快速扫描异常权限目录

















