如何将uWSGI作为有限访问用户运行?

6

我在NGINX + uWSGI中设置了Django。我能够在当前登录用户下成功运行它(在几天前我提出的一个问题的帮助下),但现在我想要以有限制的用户身份运行uwsgi --ini uwsgi.ini

到目前为止,我已经做了以下工作:
1. 创建了一个名为djangouser的用户,没有登录权限和家目录。
2. 将用户nginx添加到组djangouser中。
3. 将我的Django文件放置在/mnt/django目录中,并将文件权限更改为drwxrwx--- djangouser djangouser(递归)。
4. 更改配置文件以匹配文件位置。

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页面。
我不确定在哪里添加权限才能使其工作。在uwsgi.ini中添加“sudo chown-socket=djangouser:djangouser”也没有起作用。
感谢您的帮助 :)
2个回答

4
如果您想以特定用户身份运行uWSGI,则只有两个选项:
  1. 直接从该用户运行uWSGI服务器
  2. 以root身份运行uWSGI并添加uid和gid选项。

3

您可以在uwsgi ini文件中创建用户并设置uid/gid属性。

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

我使用uwsgi版本2.0.12-debian进行测试,对于一个简单的cgi应用程序,使用python3虚拟环境可以正常工作。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接