Permission denied when trying to read /var/log/nginx/error.log
Permission denied when opening /var/log/apache2/access.log
error: error creating output file /var/log/nginx/access.log.1: Permission denied
avc: denied { write } for pid=1234 comm="httpd"
# 查看当前权限
ls -l /var/log/nginx/error.log
# 设置正确权限(以Nginx为例)
sudo chown nginx:nginx /var/log/nginx/*
sudo chmod 640 /var/log/nginx/*
# 确保日志目录有正确权限
sudo chmod 755 /var/log/nginx
sudo chown root:nginx /var/log/nginx
# 检查logrotate配置
sudo cat /etc/logrotate.d/nginx
# 确保配置中包含正确的用户/组设置
# 示例配置片段:
# /var/log/nginx/*.log {
# create 0640 nginx nginx
# ...
# }
# 检查SELinux上下文
ls -Z /var/log/nginx/error.log
# 修复上下文(以Nginx为例)
sudo chcon -R -t httpd_log_t /var/log/nginx/
# 或者允许服务写入日志
sudo setsebool -P httpd_unified 1
# 临时解决方案(不推荐生产环境)
sudo setenforce 0
Apache修复示例:
sudo chown apache:apache /var/log/httpd
sudo chmod 755 /var/log/httpd
MySQL修复示例:
sudo chown mysql:mysql /var/log/mysql
sudo chmod 755 /var/log/mysql
标准化权限设置:
使用正确的用户/组:
sudo chown appuser:appgroup /path/to/logs
定期检查权限:
sudo find /var/log -type f -exec ls -l {} \;
配置umask:
审计日志权限变更:
sudo auditctl -w /var/log/ -p wa -k logfile_changes
使用strace
跟踪权限问题:
sudo strace -f -e trace=file app_command 2>&1 | grep EACCES
检查系统日志:
sudo grep -i permission /var/log/messages
sudo grep -i denied /var/log/audit/audit.log
使用getfacl
检查ACL:
getfacl /var/log/nginx/error.log
通过正确设置和维护日志文件权限,可以确保系统日志的完整性和安全性,同时避免应用程序因权限问题而无法正常运行。