linux acl可不改属主属组实现多部门分层权限:需先确认文件系统启用acl选项并安装setfacl/getfacl工具;再用setfacl -m为marketing、dev、ceo等角色分别授权;通过setfacl -d -m设置默认acl确保新文件自动继承;配合umask 002及mask校验完成闭环验证。

Linux 中用 ACL 管理多级部门共享文档,核心是“不改属主、不乱组、权限按需分层”。比如市场部、研发部、管理层共用一个 /shared/docs 目录,但市场只能读、研发可读写、管理层全权控制——ACL 能干净实现,不用建一堆嵌套组或开 o+w。
确认基础支持:文件系统 + 工具
ACL 不是装个命令就行,得先确保底层跑得通:
- 运行
mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,输出含acl才算真正启用;没有就临时执行sudo mount -o remount,acl /shared - 永久生效要改
/etc/fstab,在对应分区的 options 字段加acl(如defaults,acl) - 检查命令是否存在:
which setfacl getfacl;缺失则装:sudo apt install acl(Debian/Ubuntu)或sudo dnf install acl(RHEL/Rocky)
分角色设置访问权限:用户与组并行授权
对目录直接设 ACL,让不同部门按身份获得对应权限,互不干扰:
- 给市场部组只读:
setfacl -m g:marketing:r-X /shared/docs(X表示仅对目录和已有执行位的文件加x,更安全) - 给研发部组读写:
setfacl -m g:dev:rwx /shared/docs - 给 CEO 单独加完全控制:
setfacl -m u:ceo:rwx /shared/docs - 若某外包人员需临时读取,加一条:
setfacl -m u:vendor:r-- /shared/docs,完事即删,不留隐患
保障新文件自动继承:设默认 ACL 是关键
光设当前目录没用,新上传/新建的文件必须自动带上权限,否则每次都要手动补:
- 执行:
setfacl -d -m g:marketing:r-X,g:dev:rwx,u:ceo:rwx /shared/docs - 执行后用
getfacl /shared/docs查看,应有以default:开头的条目 - 注意:默认 ACL 只影响新建项,不影响已有文件;且只对目录有效
- 搭配统一
umask 002(写入/etc/profile或用户~/.bashrc),避免新建文件被过滤掉写权限
验证权限是否真落地:别信“看起来设了”
配置完必须动手测,尤其注意 mask 和实际生效关系:
- 切到市场用户:
su - marketing-user,进目录创建测试文件:touch test.txt && mkdir testdir - 分别运行:
getfacl test.txt和getfacl testdir,确认出现group:marketing:r--或group:marketing:r-x - 如果权限没体现,按顺序排查:父目录是否有
default:条目 → 文件系统是否真启用了acl→ 当前用户umask是否太严(如022会砍掉组写位)→mask::是否被压低(可用setfacl --recompute-mask /shared/docs重算)











