Linux目录默认ACL需用setfacl -d显式设置,仅影响新建文件/子目录;须满足:目标为目录、文件系统启用acl、执行用户有写权限及足够权限。

Linux 中目录的默认 ACL 不是自动存在的,必须用 setfacl -d 显式设置,它只影响之后在该目录下新建的文件和子目录,不改变已有内容。
确认前提条件
确保三点都满足,否则 setfacl -d 会静默失败或不生效:
- 目标路径是目录(对普通文件设
-d会报错) - 所在文件系统已启用 ACL 支持:运行
tune2fs -l /dev/xxx | grep "Default mount options",输出中需含acl;若无,需在/etc/fstab对应项加acl并重挂载 - 执行用户对该目录有写权限,且是所有者或具有足够权限(如 root)
设置默认 ACL 的基本语法
命令格式统一为:
setfacl -d -m [类型]:[标识符]:[权限] 目录路径
-
-d表示“default”,即设为默认规则 -
-m表示“modify”,用于添加或更新规则 - 常见类型:
u(用户)、g(组)、o(其他)、mask(掩码,通常由系统自动维护) - 例如:
setfacl -d -m g:devteam:rwx /shared—— 新建文件/子目录将自动赋予devteam组rwx权限
让新文件真正可用的关键配合项
仅设 default ACL 不足以让协作顺畅,还需同步处理三件事:
-
属组继承:用
chown :devteam /shared && chmod g+s /shared,确保新建项自动归属devteam组(ls -ld /shared中组权限位显示为s) -
umask 协调:用户新建文件受 umask 限制,建议统一设为
002(如写入~/.bashrc),否则即使 default ACL 给了rw-,文件也可能只有rw-r--r--(而非期望的rw-rw-r--) -
粘滞位防误删:多人可写时加
chmod +t /shared,避免他人删除你创建的文件(末位显示t)
验证与清理
设置后立即检查是否生效:
- 运行
getfacl /shared,看到含default:开头的行(如default:group:devteam:rwx)即表示成功 - 新建一个子目录:
mkdir /shared/testdir,再执行getfacl /shared/testdir,应完整继承 default 规则,并自带自己的default:行 - 要清除默认 ACL,用
setfacl -k /shared(仅删 default)或setfacl -b /shared(清空全部 ACL)


















