3

I want to rotate the logs of a Django / apache2 / wsgi website. But sometimes (not always, which is even more strange) logging.handlers.TimedRotatingFileHandler creates new log files owned by root! So my application doesn't have write access any more to the log, and gives me a server error.

I have specified umask=0007 in my WSGIDaemonProcess setting, but that doesn't help either.

How can that happen? and how to fix it?

4

1 回答 1

0

即使您使用的是 mod_wsgi 嵌入式模式,也不应该发生这种情况,因为没有 Python 应用程序代码会以 root 身份运行,除非您破解了 Apache 源代码以禁用其中的安全保护,从而阻止您将用户/组设置为根。

首先建议您验证您是否在守护程序模式下运行,因此是否正在使用 WSGIDaemonProcess 定义。

还要确保您没有使用旧版本的 mod_wsgi。在 3.0 之前的 mod_wsgi 中,解释器本身会在以 root 身份运行时在 Apache 父级中初始化,但在创建子进程后,您的应用程序的任何代码仍将作为普通用户运行。但是,如果使用这样一个较旧的 mod_wsgi 版本并且您正在做一些非常奇怪的事情,例如使用本地“sitecustomize.py”或加载“.pth”文件以设置日志记录的副作用,那么您可能会设法以 root 身份运行东西你不应该。

于 2012-12-19T10:05:36.367 回答