Как мне запустить uWSGI как пользователь с ограниченными правами?

У меня есть настройка Django в NGINX + uWSGI. Я могу заставить его работать нормально под моим текущим вошедшим пользователем (с помощью вопроса, который я задал несколько дней назад), но теперь я хочу запустить uwsgi --ini uwsgi.ini как пользователь с ограниченным доступом.

Вот что я сделал до сих пор:
1. Создан пользователь djangouser без входа в систему и без домашнего каталога.
2. Добавлен пользователь nginx в группу djangouser
3. Поместил мои файлы Django в /mnt/django каталог и измененные права доступа к файлу django в drwxrwx--- djangouser djangouser (Рекурсивный)
4. Изменены файлы conf в соответствии с расположением файлов

файл uwsgi.ini

[uwsgi]
chdir=/mnt/django/project/awssite
module=awssite.wsgi
home=/mnt/django/project
master=true
processes=2
uid=djangouser
gid=djangouser
socket=/mnt/django/djangosocket/awssite.socket
chmod-socket
vacuum=true

Когда я пытаюсь бежать uwsgi --ini uwsgi.ini это ошибка, которую я получаю

[uWSGI] getting INI configuration from uwsgi.ini
*** Starting uWSGI 2.0.12 (64bit) on [Thu Feb 18 00:18:25 2016] ***
compiled with version: 4.8.3 20140911 (Red Hat 4.8.3-9) on 01 February 2016 04:17:11
os: Linux-4.1.13-19.31.amzn1.x86_64 #1 SMP Wed Jan 20 00:25:47 UTC 2016
nodename: ip-10-200-1-89
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/ec2-user
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /mnt/django/project/awssite
chdir(): Permission denied [core/uwsgi.c line 2586]
chdir(): Permission denied [core/uwsgi.c line 1608]

Примечание. Когда я добавил своего зарегистрированного пользователя в djangouser группа, uwsgi --ini uwsgi.ini работает нормально, и я смог загрузить страницы Django.

Я не уверен, где еще добавить разрешения, чтобы это работало. Добавление sudo chown-socket=djangouser:djangouser в uwsgi.ini тоже не работал.

Я ценю помощь:)

2 ответа

Решение

Если вы хотите запустить uWSGI от имени конкретного пользователя, есть только 2 варианта:

  1. запустить сервер uWSGI напрямую от этого пользователя
  2. запустите uWSGI от имени пользователя root и добавьте параметры uid и gid.

Вы можете создать пользователя и установить свойства uid / gid в своем файле uwsgi ini.

[uwsgi] ... uid=myuser gid=mygroup

Я протестировал это с помощью uwsgi версии 2.0.12-debian, и она работала для простого приложения cgi, использующего python3 virtualenv.

http://uwsgi-docs.readthedocs.io/en/latest/Options.html

Другие вопросы по тегам