Nginx日志权限需遵循“最小可用+严格隔离”原则:/var/log/nginx目录设750,属主属组与Nginx运行用户一致;access.log和error.log设640,属主为www-data,属组为adm;logrotate配置须含create 640 www-data adm;Web层需通过location规则禁止日志路径访问。

Nginx 日志文件权限的核心是“最小可用 + 严格隔离”,不能只看默认值,得结合运行身份、轮转机制和访问控制统一设。
/var/log/nginx 目录权限应设为 750
这个目录本身不需写入,但 Nginx 工作进程必须能进入并创建/追加日志文件:
- 属主属组必须与 Nginx 运行用户一致(Debian 默认是
www-data:adm或www-data:www-data) - 权限 750 表示:属主可读写执行,属组可读执行,其他用户完全无权限
- 执行命令:
sudo chmod 750 /var/log/nginx
access.log 和 error.log 文件权限应为 640
日志文件只需 Nginx 进程可写、同组用户(如 adm)可读(用于日志分析或审计),其他人不可触碰:
- 若属主不是 Nginx 运行用户,先修正:
sudo chown www-data:adm /var/log/nginx/*.log - 再设权限:
sudo chmod 640 /var/log/nginx/*.log - 注意:600 太严(可能阻断 logrotate 或日志收集工具读取),644 太松(其他用户可读,泄露敏感信息)
logrotate 配置必须同步加固
轮转时新建的日志文件极易恢复成 root:root + 644,导致权限失效:
- 编辑
/etc/logrotate.d/nginx,确保包含两行:create 640 www-data admsu www-data adm - 测试是否生效:
sudo logrotate -d /etc/logrotate.d/nginx,确认输出中有creating new log file with mode = 0640
Web 层必须屏蔽日志路径访问
即使本地权限正确,若 Nginx 配置意外暴露 /var/log/nginx 下的路径,攻击者可通过 URL 下载日志:
- 检查所有
server块中root或alias指令,确保没指向/var/log/nginx - 在全局或站点配置中加入防护:
location ~ \.log$ { deny all; }location ^~ /logs/ { deny all; }
不复杂但容易忽略


















