Nginx日志目录权限应设为750、日志文件为640,属主属组需与nginx运行用户(如www-data)一致,并在logrotate中配置create 640和su指令防止权限错乱。

nginx的logs目录权限设置需兼顾可写性与安全性,核心原则是:仅允许nginx工作进程(通常是www-data或nginx用户)读写日志,禁止其他用户访问。
确认nginx运行用户和组
先查清实际运行身份,避免权限错配:
- 执行
ps aux | grep nginx,观察主进程的USER列(如www-data或nginx) - 检查配置文件
/etc/nginx/nginx.conf中user指令(如user www-data;),若未显式设置,默认可能为nobody或nginx - 确保
logs目录归属与该用户/组一致,例如:sudo chown -R www-data:www-data /var/log/nginx
设置合理目录与文件权限
权限过松(如777)会导致日志泄露敏感信息(IP、URL、错误堆栈等);过严则nginx无法写入日志:
-
logs目录建议权限:750(属主rwx,属组rx,其他无权限) - 日志文件(如
access.log、error.log)建议权限:640(属主rw,属组r,其他无权限) - 执行命令示例:
sudo chmod 750 /var/log/nginxsudo chmod 640 /var/log/nginx/*.log
防止日志轮转引发权限问题
使用logrotate时,若未正确配置,新生成的日志文件可能归属root且权限宽松:
- 编辑
/etc/logrotate.d/nginx,确保包含create 640 www-data www-data行 - 添加
su www-data www-data(或对应用户/组),保证轮转过程以nginx身份创建文件 - 测试配置:运行
sudo logrotate -d /etc/logrotate.d/nginx查看调试输出是否正常
额外加固建议
进一步缩小攻击面:
- 禁用目录列表:确认
logs目录不在任何web可访问路径下(如/var/log/nginx不应被Nginx的location暴露) - 定期审计:用
find /var/log/nginx -type f ! -perm 640 -ls检查异常权限文件 - 敏感环境可启用日志加密或转发到远程SIEM系统,本地只保留短期日志

















