尝试以非 root 身份在 Apache 2.2 上使用“rotatelogs”

尝试以非 root 身份在 Apache 2.2 上使用“rotatelogs”

我们已将 Apache 设置为在 RedHat 机器上以 www 用户身份运行,但由于进程本身以 root 身份运行,因此其日志是以 root 所有权写入的。看来最好的运行方法是 1) 以非 root 用户身份运行 rotatelogs,2) 将日志放在为具有适当权限的用户预留的位置。

可以这样做吗?我这里没看到方法:

https://httpd.apache.org/docs/2.2/programs/rotatelogs.html

答案1

无需对文件所有权做任何事情。Red Hat 在其系统中提供了合理的默认值。每天有数百万个 Web 服务器运行,其 httpd 日志归 root 所有。最佳做法是在这种情况下不要管它。

默认情况下,RH 系统上的 httpd 日志使用 logrotate 进行轮换。此操作每天以 root 用户身份运行,因此不存在所有权问题。您可以通过编辑 logrotate 配置(/etc/logrotate.conf、/etc/logrotate.d/httpd)来调整日志轮换方式。

如果您按照链接建议使用管道日志,那么您将需要配置自己的 cron 作业以以 root 身份运行。

这都是很正常的事情。

答案2

调用它的具体方法取决于本地配置(例如,apache在 RHEL 6 上默认禁用),但您可以使用sudorunuser等,如下所示:

ErrorLog "|sudo -u apache rotatelogs -f /var/log/httpd/errors.%Y-%m-%d.log 86400"

相关内容