Назад | Перейти на главную страницу

Как я могу запустить fastcgi через nginx как пользовательские www-данные?

Мое приложение django сохраняет изображения, и они сохраняются как никто: никто вместо www-data: как раньше они находились на другом сервере. nginx настроен как пользовательские www-данные, и я запустил manage.py runfcgi как root, поэтому разрешение не должно быть проблемой.

Проверьте ps waux. Я подозреваю, что ваш manage.py runfcgi отказался от привилегий другому пользователю, чтобы убедиться, что вы не запускаете скрипты от имени пользователя root - это очень опасно.

В этом случае решение так же просто, как редактирование конфигурации, однако вы управляете своими экземплярами fcgi и заставляете их использовать www-data: www-data в качестве пользователя и группы, для которой он передает права, а не для кого-либо.

Запуск django в fastcgi должен быть остановлен и запущен пользовательским кодом, если вы вызываете ./manage.py runfcgi, ваш пользователь будет владеть процессом. Если вы запускаете это из запускаемого задания, корень будет владеть процессом, что плохо, потому что файлы и журналы, которые он записывает, не будут доступны другим пользователям и процессам и не оставят песочницу разрешений для вашего приложения. Лучше всего запускать ваше приложение с тем же пользователем, что и apache или другие приложения, которым необходимо обмениваться файлами с ним. Если ваше приложение необходимо запустить из сценария запуска (корневой контекст)

sudo -u youruser manage.py runfcgi

чтобы ваше приложение не запускалось от имени пользователя root.

Вы упомянули пользователя none - это пользователь по умолчанию, который nginx сохраняет файлы как. Я предлагаю вам заставить nginx использовать того же пользователя, что и ваше приложение, вы можете сделать это, добавив

user youruser;

в nginx.conf