在 CentOS 上设置 Apache 日志权限,核心目标是:Apache 能写、系统安全、日志可被合理查看。下面按常见场景说明。
/var/log/httpd/error_log/var/log/httpd/access_log/var/log/httpd/Apache 运行用户通常是:
apacheapachechown root:apache /var/log/httpd
chmod 750 /var/log/httpd
说明:
root 拥有目录apache 组可进入并写日志chown apache:apache /var/log/httpd/*.log
chmod 640 /var/log/httpd/*.log
说明:
apache 用户可写apache 组可读常见原因和解决办法:
查看:
getenforce
如果是 Enforcing,确保日志有正确 SELinux 类型:
ls -Z /var/log/httpd
正常应是:
system_u:object_r:httpd_log_t:s0
修复:
restorecon -Rv /var/log/httpd
如果你把日志放到别的地方,例如:
CustomLog /data/logs/apache/access.log combined
需要:
chown apache:apache /data/logs/apache
chmod 750 /data/logs/apache
restorecon -Rv /data/logs/apache
并确保 SELinux 允许:
semanage fcontext -a -t httpd_log_t "/data/logs/apache(/.*)?"
restorecon -Rv /data/logs/apache
CentOS 自带:
/etc/logrotate.d/httpd
轮转后权限通常由 logrotate 控制,建议保持:
create 640 apache apache
| 项目 | 推荐值 |
|---|---|
| 目录 owner | root:apache |
| 目录权限 | 750 |
| 日志文件 | apache:apache |
| 文件权限 | 640 |
| SELinux | httpd_log_t |
如果你愿意,我可以:
给你一套精确命令。