在 Debian 上,Nginx 日志(通常是 /var/log/nginx/access.log 和 /var/log/nginx/error.log)的权限设置,核心目标是:Nginx 能写、系统能读、安全风险最小。下面分情况说明。
Debian 下 Nginx 默认由 www-data 用户运行:
ps aux | grep nginx
日志默认权限一般是:
-rw-r----- 1 www-data adm access.log
-rw-r----- 1 www-data adm error.log
含义:
www-data(Nginx worker)adm(日志查看组)640✅ 这是 Debian 官方推荐方式
sudo chown www-data:adm /var/log/nginx/*.log
sudo chmod 640 /var/log/nginx/*.log
把用户加入 adm 组:
sudo usermod -aG adm youruser
然后重新登录即可:
tail -f /var/log/nginx/access.log
查看运行用户:
grep user /etc/nginx/nginx.conf
例如:
user nginx;
则日志应改为:
sudo chown nginx:adm /var/log/nginx/*.log
目录权限不能太松:
sudo chown root:adm /var/log/nginx
sudo chmod 750 /var/log/nginx
否则可能导致:
Debian 使用 /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
⚠️ 如果你手动改了用户,create 行也要同步修改。
❌ 权限 666 / 777
→ 任何用户都能读日志,极不安全
❌ 日志属主是 root,Nginx 不是 root
→ Nginx 无法写日志
❌ /var/log/nginx 权限 777
→ 可被任意写入伪造日志
/var/log/nginx root:adm 750
/var/log/nginx/*.log www-data:adm 640
如果你有特殊需求(Docker、多用户、集中日志),可以告诉我场景,我给你定制方案。