Я использую Django fcgi со стандартной строкой:

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

Проблема заключается в том, что только процесс разделяется между процессом fastcgi и веб-сервером, а не пользователем - однако группа не имеет прав записи по умолчанию (исправление запускает chmod g + w вручную).

Как заставить процесс сделать сокет в режиме 0770?

3
Almad 7 Авг 2010 в 19:47

3 ответа

Лучший ответ

./manage.py runfcgi help говорит:

Umask = UMASK umask для использования при демонизации (по умолчанию 022).

Так что вам просто нужно запустить:

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

И сокет с режимом 0770 будет создан. Обратите внимание, что umask устанавливается только тогда, когда для daemonize установлено значение true (по умолчанию).

4
Ivan Virabyan 12 Окт 2010 в 08:57

umask= не работает при работе с daemonize=false. В этом случае он просто использует ваш текущий os umask, поэтому запустите umask 0007 перед вашим скриптом.

1
rumpel 3 Июн 2016 в 17:25

Я не могу найти способ сделать это с помощью fastcgi, добавил os.fchmod в конце моего файла settings.py, и это, кажется, заставляет его работать. все же это ужасный хак, и они должны позволить вам установить его при вызове сервиса.

1
justme 13 Авг 2010 в 16:10