在 Debian(以及大多数 Linux 发行版)中,日志文件通常位于 /var/log,由 rsyslog / journald / 应用自身 维护。修改日志权限需要分情况处理,否则系统更新或重启可能恢复原样。
下面按常见场景说明。
sudo chmod 640 /var/log/syslog
sudo chown root:adm /var/log/syslog
⚠️ 重启或日志轮转(logrotate)后可能失效。
Debian 日志权限通常由 logrotate 控制。
ls /etc/logrotate.d/
常见文件:
rsyslogaptnginxmysql编辑:
sudo nano /etc/logrotate.d/rsyslog
示例内容:
/var/log/syslog
/var/log/messages
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
create 0640 root adm
}
✅ 关键行:
create 0640 root adm
你可以改成:
create 0644 root root
或只允许某个用户:
create 0640 root youruser
保存后测试:
sudo logrotate -vf /etc/logrotate.d/rsyslog
ls -l /var/log/journal
将用户加入 systemd-journal 组:
sudo usermod -aG systemd-journal 用户名
重新登录后生效。
devuser 读取 /var/log/nginxsudo groupadd logread
sudo usermod -aG logread devuser
sudo chown root:logread /var/log/nginx
sudo chmod 0750 /var/log/nginx
| 做法 | 原因 |
|---|---|
直接 chmod 777 |
严重安全风险 |
修改 /var/log 整体权限 |
系统更新会覆盖 |
修改 /run/log |
重启丢失 |
| 日志类型 | 正确方式 |
|---|---|
/var/log/syslog |
/etc/logrotate.d/rsyslog |
| nginx / mysql 日志 | /etc/logrotate.d/nginx |
| journal 日志 | systemd-journal 组 |
| 自定义应用日志 | 应用配置 + logrotate |
你可以直接告诉我:
我可以给你一条精确可用的配置。