web服务器共享目录acl配置核心是角色映射为独立系统组、同步设置当前与默认acl、严格隔离权限边界、web服务用户单独授权;需创建devgrp和opsgrp组,执行setfacl -m与-d -m双命令赋权,禁用other权限,区分目录/文件语义,定期用getfacl核验。

在 Web 服务器共享目录(如 /var/www/example.com)中,为开发人员和运维人员配置差异化 ACL 规则,核心是把角色映射成系统组、分层设置当前与默认 ACL、严格隔离权限边界,并确保 Web 服务用户独立授权。
角色必须映射为独立系统组
不要用临时用户或混用主组。创建语义清晰的业务组:
-
开发组:
sudo groupadd devgrp,将开发人员加入:sudo usermod -aG devgrp alice -
运维组:
sudo groupadd opsgrp,将运维人员加入:sudo usermod -aG opsgrp bob - 禁止将
www-data(或nginx)加入任何业务组——它只能通过 ACL 单独授权,否则会绕过角色隔离
同步设置当前 ACL 与默认 ACL
仅设当前 ACL,新创建的文件/子目录不会继承权限。必须两条命令一起执行:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 赋予当前目录权限:
setfacl -m g:devgrp:rwx,g:opsgrp:rx,u:www-data:r-x /var/www/example.com - 启用自动继承:
setfacl -d -m g:devgrp:rwx,g:opsgrp:rx,u:www-data:r-x /var/www/example.com - 子目录可单独收紧:例如配置目录禁止开发组写入:
setfacl -m g:devgrp:r-x /var/www/example.com/config
区分目录与文件的权限语义
ACL 条目要匹配实际操作需求,不能简单套用 rwx:
-
目录:需
r(列出)、x(进入)、w(增删改)组合;开发组通常需要rwx,运维组只需rx(查日志、重启服务) -
静态文件(HTML/CSS/JS):Web 用户和协作组只需
r--,禁用w和x -
上传目录(如
/uploads):只给www-data:w和开发组r,禁用x防止执行上传脚本
定期验证并防破坏
ACL 易被 chmod -R 或复制操作覆盖,需轻量检查:
- 快速核对关键项:
getfacl /var/www/example.com | grep -E "^(#|default:|user:www-data|other:)" - 确认三项:是否存在
default:行、www-data权限是否为r-x、other是否为--- - 若发现
mask::r-x导致 ACL 中的w未生效,手动调高:setfacl -m m::rwx /var/www/example.com










