Nginx

如何以使用者 ww-data 的身份通過 nginx 執行 fastcgi?

  • October 10, 2011

我的 django 應用程序保存圖像,它們被保存為 nobody:nobody 而不是 www-data: 就像它們以前在不同的伺服器下一樣。nginx 設置為使用者 www-data,我以 root 身份執行 manage.py runfcgi,因此權限不應該成為問題。

檢查ps waux。我的懷疑是你的 manage.py runfcgi 已經放棄了其他使用者的權限,以確保你沒有以 root 身份執行腳本——這是一件非常危險的事情。

如果是這種情況,解決方案就像編輯配置一樣簡單,但是您正在管理您的 fcgi 實例並讓它使用 www-data:www-data 作為它放棄特權的使用者和組,而不是任何人。

在 fastcgi 中執行 django 必須由使用者程式碼停止和啟動,如果您呼叫 ./manage.py runfcgi,您的使用者將擁有該程序。如果您從啟動作業根執行此程序,則該程序將擁有該程序,這很糟糕,因為其他使用者和程序將無法訪問它寫入的文件和日誌,並且不會為您的應用程序留下權限沙箱。最佳實踐是使用與 apache 或其他需要與其共享文件的應用程序相同的使用者啟動您的應用程序。如果您的應用需要從啟動腳本(根上下文)啟動

sudo -u youruser manage.py runfcgi

以避免您的應用程序以 root 身份執行。

您提到了使用者“nobody”-這是預設使用者 nginx 將文件保存為。我建議你讓 nginx 使用與你的應用相同的使用者,你可以通過添加來做到這一點

user youruser;

在 nginx.conf

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