Python 使用FastCGI运行Django时的套接字权限
我使用标准行运行Django fcgi: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的末
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无法使用