WSGIDaemonProcess:指定使用者
我為使用 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”身份啟動,但應該沒有問題。