2010-08-07 53 views
2

我正在Django的FCGI標準線運行的Django時:套接字權限FastCGI的

exec setuidgid $USERID $VENVBIN/python $WEBAPP/manage.py runfcgi daemonize=false socket=$FCGISOCKET 

問題是,只有組FastCGI進程和Web服務器之間共享,而不是用戶 - 但組不具有寫權限,由默認(修補程序正在手動運行chmod g + w)。

如何強制進程使模式爲0770的套接字?

回答

4

./manage.py runfcgi help說:

的umask = UMASK的umask daemonizing(默認022)時使用。

所以,你只需要運行:

./manage.py runfcgi socket=$FCGISOCKET umask=007 

與模式0770插座將被創建。請注意,只有當守護程序設置爲true(默認設置)時纔會設置umask。

+0

我試過各種umask設置,但它們都爲我創建srwxr-xr-x權限: -/ – Almad 2010-11-28 18:23:34

+0

你確定你沒有嘗試用'daemonize = false'運行它? – 2010-11-28 22:10:47

+0

你說得對,我看不懂。然而,daemonize = true阻止我使用daemontools來監督進程......有什麼方法可以使用umask嗎? – Almad 2010-11-30 22:31:16

1

無法找到一種方法來做到這一點與fastcgi,添加os.fchmod在我的settings.py結束,這似乎使它的工作。仍然是一個可怕的黑客攻擊,他們應該允許你在調用服務時設置它。

+0

是的,使用類似的黑客,但我真的想避免它:] – Almad 2010-08-16 13:10:29

1

umask=在與daemonize=false一起運行時不起作用。在這種情況下,它只會使用您當前的操作系統umask,因此在您的腳本之前運行umask 0007