Apache-2.2

WSGIDaemonProcess:指定使用者

  • October 7, 2015

我為使用 mod_wsgi 部署的這個 Python webapp 設置了一個使用者帳戶。它是超級無特權的,只能從 appdir 讀取並寫入一組單獨的 tempdir,其他人無法查看。我正在使用以下配置行:

WSGIDaemonProcess xlsxf_daemon user=xlsxf group=xlsxf

很簡單。不幸的是,我們從文件中獲得了關於該user選項的資訊:

請注意,如果 Apache 未以 root 使用者身份啟動,則忽略此選項,在這種情況下,無論設置如何,守護程序都將以啟動 Apache 的使用者身份執行。

由於我在 Linode 上的預設 Ubuntu 安裝中執行它,因此 Apache 以www-data使用者身份啟動,而我確認的 Python 應用程序也注定要以www-data. 為什麼會有上述限制?我有很多 ruby​​/passenger 應用程序可以像其他使用者一樣守護程序。

編輯:好的,所以 Apache 沒有以使用者身份啟動www-data,但我仍然看到 Python webapp 執行正常www-data,儘管有上述配置行。/編輯

或者,我只是在這裡過於偏執嗎?我在這台伺服器上執行了多個不同的項目,我希望它們都作為單獨的使用者執行,“以防萬一”,但請隨時告訴我,我應該放棄並將權限轉移到www-data.

edit2:根據要求,這是所有正在執行的 apache 程序:

root     18798  0.0  1.9  16156  9880 ?        Ss   Jul26   0:03 /usr/sbin/apache2 -k start
www-data 19344  0.0  1.0  15208  5264 ?        S    Jul26   0:00 /usr/sbin/apache2 -k start
xlsxf    19361  0.0  1.2 155244  6620 ?        Sl   Jul26   0:02 /usr/sbin/apache2 -k start
www-data 19379  0.0  3.2 245436 16420 ?        Sl   Jul26   0:01 /usr/sbin/apache2 -k start
www-data 19380  0.0  3.2 243536 16496 ?        Sl   Jul26   0:01 /usr/sbin/apache2 -k start

你讀錯了。Apache 確實以“root”身份啟動,並且父 Apache 程序保持為“root”,只有 Apache 伺服器子程序以“www-data”身份執行。mod_wsgi 守護程序是從父“根”程序派生出來的,因此仍然可以更改為該使用者。

評論的意思是,如果您從一個完全非特權帳戶啟動 Apache,例如,當您在您的主目錄或其他地方安裝 Apache 時,那麼由於它不是以“root”啟動,它可以t 更改守護程序的使用者 ID。Apache 從系統初始化腳本開始雖然總是以“root”身份啟動,但應該沒有問題。

引用自:https://serverfault.com/questions/294101