我们已将 Apache 设置为在 RedHat 机器上以 www 用户身份运行,但由于进程本身以 root 身份运行,因此其日志是以 root 所有权写入的。看来最好的运行方法是 1) 以非 root 用户身份运行 rotatelogs,2) 将日志放在为具有适当权限的用户预留的位置。
可以这样做吗?我这里没看到方法:
答案1
无需对文件所有权做任何事情。Red Hat 在其系统中提供了合理的默认值。每天有数百万个 Web 服务器运行,其 httpd 日志归 root 所有。最佳做法是在这种情况下不要管它。
默认情况下,RH 系统上的 httpd 日志使用 logrotate 进行轮换。此操作每天以 root 用户身份运行,因此不存在所有权问题。您可以通过编辑 logrotate 配置(/etc/logrotate.conf、/etc/logrotate.d/httpd)来调整日志轮换方式。
如果您按照链接建议使用管道日志,那么您将需要配置自己的 cron 作业以以 root 身份运行。
这都是很正常的事情。
答案2
调用它的具体方法取决于本地配置(例如,apache
在 RHEL 6 上默认禁用),但您可以使用sudo
、runuser
等,如下所示:
ErrorLog "|sudo -u apache rotatelogs -f /var/log/httpd/errors.%Y-%m-%d.log 86400"