在 Linux 中遇到日志权限错误(例如无法读取、写入或轮转日志),通常表现为:
Permission deniedlogrotate 报错/var/log 下某些文件下面按常见原因 → 解决办法说明。
日志通常在 /var/log,默认只有 root 或特定用户可访问。
解决:
sudo cat /var/log/syslog
或切换到 root:
sudo -i
查看权限:
ls -l /var/log/
正常示例:
-rw-r----- 1 syslog adm ... syslog
修复权限(示例):
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
如 Nginx / Apache / Java 服务写日志失败。
查看服务用户:
ps -ef | grep nginx
修改日志目录归属:
sudo chown -R www-data:www-data /var/log/nginx
即使权限正确也可能被拒。
查看:
getenforce
临时关闭测试:
sudo setenforce 0
永久解决(推荐):
sudo semanage fcontext -a -t var_log_t "/custom/log(/.*)?"
sudo restorecon -Rv /custom/log
日志写不进去。
检查:
df -h
df -i
清理旧日志:
sudo journalctl --vacuum-size=200M
报错如:
error: skipping "/var/log/xxx" because parent dir has insecure permissions
修复:
sudo chmod 755 /var/log
sudo chown root:root /var/log
查看:
sudo aa-status
临时测试:
sudo aa-complain /etc/apparmor.d/*
# 1. 看错误
journalctl -xe
# 2. 看权限
ls -l /var/log
# 3. 看磁盘
df -h; df -i
# 4. 看 SELinux
getenforce
chmod 777logrotate 和 rsyslog如果你能贴出具体报错信息或日志路径(如 /var/log/nginx/error.log 权限被拒),我可以直接帮你给出精确命令。