在 Debian 上,Nginx 日志(通常在 /var/log/nginx/)的权限设置,主要要考虑 安全性、可读取性、以及 logrotate 是否正常。
下面分情况说明。
Debian 下 Nginx 默认:
/var/log/nginx/
├── access.log
└── error.log
默认权限一般是:
drwxr-x--- root adm /var/log/nginx
-rw-r----- root adm access.log
-rw-r----- root adm error.log
含义:
rootadm(Debian 中用于日志查看的组)✅ 推荐做法:
adm 组sudo usermod -aG adm 用户名
Nginx worker 进程通常以:
www-data
运行(在 nginx.conf 中配置)。
但 写日志的是 master 进程(root)启动的 worker,只要:
www-data 有 写权限或属组正确
即可。如果你自定义日志路径,例如:
access_log /data/logs/nginx/access.log;
那必须保证:
目录属主或属组 www-data 可写
例如:
sudo mkdir -p /data/logs/nginx
sudo chown -R www-data:adm /data/logs/nginx
sudo chmod 0750 /data/logs/nginx
Debian 使用:
/etc/logrotate.d/nginx
默认内容类似:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
kill -USR1 `cat /run/nginx.pid`
endscript
}
关键点:
create 0640 www-data adm否则:
❌ 给 777
chmod 777 /var/log/nginx
→ 安全隐患,任何人可删日志
❌ 日志目录属主是 www-data 但权限过松
drwxrwxrwx www-data www-data
❌ 自定义路径但 logrotate 没改
✅ 不改,保持:
root:adm 0750 目录
root:adm 0640 日志
sudo chown -R www-data:adm /your/log/dir
sudo chmod 0750 /your/log/dir
sudo usermod -aG adm $USER
newgrp adm
如果你愿意,可以告诉我:
我可以给你更精确的权限方案。