Python 使用FastCGI运行Django时的套接字权限

Python 使用FastCGI运行Django时的套接字权限,python,django,deployment,fastcgi,Python,Django,Deployment,Fastcgi,我使用标准行运行Django fcgi: exec setuidgid $USERID $VENVBIN/python $WEBAPP/manage.py runfcgi daemonize=false socket=$FCGISOCKET 问题是,fastcgi进程和webserver之间只共享一个组,而不是用户-但默认情况下,该组并没有写入权限(修补程序手动运行chmod g+w) 如何强制进程在模式0770下创建套接字?无法使用fastcgi实现此目的,在my settings.py的末

我使用标准行运行Django fcgi:

exec setuidgid $USERID $VENVBIN/python $WEBAPP/manage.py runfcgi daemonize=false socket=$FCGISOCKET
问题是,fastcgi进程和webserver之间只共享一个组,而不是用户-但默认情况下,该组并没有写入权限(修补程序手动运行chmod g+w)


如何强制进程在模式0770下创建套接字?

无法使用fastcgi实现此目的,在my settings.py的末尾添加了一个os.fchmod,这似乎使其正常工作。这仍然是一个可怕的黑客行为,他们应该允许您在调用服务时设置它。

/manage.py runfcgi help
说:

umask=后台监控时要使用的umask umask(默认022)

因此,您只需运行:

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

将创建一个模式为0770的插座。请注意,仅当daemonize设置为true(默认设置)时才会设置umask。

umask=
在运行
daemonize=false
时不起作用。在这种情况下,它将只使用您当前的操作系统umask,因此在您的脚本之前运行
umask 0007

是的,使用类似的破解,但我确实希望避免:]我尝试了各种umask设置,但它们都为我创建了srwxr-xr-x权限:-您确定没有尝试使用
daemonize=false
运行它吗?您是对的,我不能正常阅读。但是,daemonize=true阻止我使用daemontools来监督进程……有没有办法将umask与之配合使用?似乎没有办法做到这一点。代码仅在后台监控时设置umask。它可以在django.core.servers.fastcgi中的一行代码中修复。但这将是另一个不太好的方法。我真的很想知道为什么django开发人员在没有Daemoning的情况下使umask无法使用