2010-08-07 74 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

相关问题