2012-12-19 99 views
2

我想旋轉Django/apache2/wsgi網站的日誌。但有時(並不總是,這更奇怪)logging.handlers.TimedRotatingFileHandler創建由root擁有的新日誌文件! 因此,我的應用程序不再具有對日誌的寫訪問權限,並且給我一個服務器錯誤。爲什麼logging.handlers.TimedRotatingFileHandler創建由root擁有的新日誌文件?

我在我的WSGIDaemonProcess設置中指定了umask = 0007,但這也沒有幫助。

這怎麼會發生?以及如何解決它?

回答

0

即使您使用的是mod_wsgi嵌入模式,也不應該發生這種情況,因爲沒有Python應用程序代碼可以以root身份運行,除非您已經破解了您的Apache源代碼以禁用其中的安全保護功能,用戶/組爲root。

首先會建議您驗證您是否在守護進程模式下運行,從而確定是否正在使用WSGIDaemonProcess定義。

另外,還要確保你沒有使用mod_wsgi的一個古老的版本。在3.0之前的mod_wsgi中,當以root用戶身份運行時,解釋器本身將在Apache父進程中初始化,但是在創建子進程之後,應用程序的任何代碼仍將作爲凡人運行。但是,如果使用這樣一個較舊的mod_wsgi版本,並且您在使用本地'sitecustomize.py'或副本影響加載'.pth'文件來設置日誌記錄時真的很怪異,那麼您可能會設法以root身份運行你不應該。

相關問題