acl是突破linux传统ugo权限限制、实现精细化目录访问控制的核心手段,通过为特定用户或组设置独立权限、配置默认acl使新文件自动继承、结合职能分组与权限解耦,达成“谁能在哪做啥”的精准管控。

服务器目录访问权限精细化配置,核心是把“谁能在哪做啥”这件事说清楚、管到位,不是简单设个755就完事。它既要防住攻击者,又不能卡住业务运行,关键在分层控制和动态适配。
按角色分组,不直接授予权限
避免给单个用户直接加读写权限,而是构建三层结构:
- 创建职能组,比如
web-deployers(负责部署)、log-readers(只读日志)、backup-svc(备份服务账户) - 把用户加入对应组,而非直接赋权;一个运维可同时属于多个组,但每个组权限边界清晰
- 目录属组设为对应职能组,权限设为
750或770,确保只有组内成员能访问
Linux用ACL补足UGO的短板
标准的user/group/others三元组不够用时,ACL是刚需:
- 对协作目录启用默认ACL:
setfacl -d -m u:nginx:r-x,g:devteam:rwx /var/www/html - 新文件自动继承权限,不用每次手动
chown或chmod - 验证是否生效:
getfacl /var/www/html看是否有default:开头的条目 - 注意配合
umask 002,否则新建文件可能被过滤掉写权限
Web目录必须“功能与权限解耦”
Apache/Nginx的配置权限和系统文件权限要分开管:
- 上传目录(如
/uploads)系统权限可设755,但Nginx里必须禁用脚本执行:location ~ \.(php|pl|py|jsp|sh|cgi)$ { deny all; } - 静态资源目录设
644文件权限 + Apache中Options -ExecCGI -Indexes - 配置文件(如
.env、wp-config.php)权限必须600,属主为部署账户,Web进程完全不可读
动态时效+操作留痕,才算真精细
长期有效的高权限是最大漏洞:
- 运维临时提权用
sudo令牌,有效期建议10–15分钟,超时自动失效 - 所有权限变更操作记录到独立审计日志,包括谁、何时、改了哪个目录、权限从多少变成多少
- 关键目录(如
/etc、/backup)开启inotify监控,权限被意外修改时实时告警











