acl是实现多部门目录读写隔离最直接可控的方式,它绕过属组限制,支持为用户/组“打补丁式”授权、设置默认acl自动继承、用mask统一约束实际权限,并可与samba/nfs协同保障跨平台权限一致性。

在多部门协同共享目录中,ACL 是实现读写隔离最直接、可控的方式——它不依赖属组变更,也不需要为每个部门建专用组,而是直接为部门用户或组“打补丁式”授权,权限边界清晰,后期调整也只需增删单条规则。
明确隔离目标与权限角色
先理清谁该访问什么、能做什么。例如财务部可读写自己目录但不可进HR目录,HR可读写自己目录但对财务目录仅限查看日志(r-x),运维管理员需全权访问所有部门目录。ACL允许你为同一目录同时设置:
– u:finance01:rwx(财务员A完全控制)
– u:hr02:---(HR员B在财务目录无任何权限)
– g:admin:rwx(管理员组全局通行)
– m::rwx(掩码确保实际生效权限不被截断)
创建带默认ACL的部门目录结构
以 /shared/departments 为根目录,按部门建子目录,并启用默认ACL保障新建内容自动继承:
- mkdir -p /shared/departments/{finance,hr,tech}
- chmod 755 /shared/departments(保证父目录可遍历)
- setfacl -m u:finance01:rwx,g:finance_group:rwx /shared/departments/finance
- setfacl -m u:hr02:rwx,g:hr_group:rwx /shared/departments/hr
- setfacl -d -m u:finance01:rwx,g:finance_group:rwx /shared/departments/finance(新文件自动获得财务权限)
- setfacl -d -m u:hr02:rwx,g:hr_group:rwx /shared/departments/hr
注意:默认ACL只对目录有效;若需限制跨部门访问,再加屏蔽规则,如 setfacl -m u:hr02:--- /shared/departments/finance。
用掩码(mask)统一约束实际生效权限
ACL权限受 mask 控制——它像一道闸门,所有用户/组的rwx权限都不能超过mask设定值。执行 setfacl -m m::rwx 可确保显式设置的权限全部生效;若发现某用户明明设了rwx却只能读,大概率是mask太窄(如m::r-x)。可用 getfacl 查看当前mask值,必要时手动重置。
配合Samba或NFS对外共享时的权限衔接
当通过Samba向Windows客户端共享这些目录时,ACL规则仍生效,但需注意两点:
– smb.conf 中对应共享段要设 force group = finance_group 和 create mask = 0660,避免客户端创建文件时绕过Linux ACL;
– 确保Samba服务运行用户(如smbd进程)有读取ACL的权限,通常以root或具备CAP_DAC_OVERRIDE能力的用户运行即可。NFSv4原生支持ACL传递,而NFSv3不支持,部署前需确认协议版本。











