除非是root,否则uWSGI Emperor权限被拒绝

我试过使用二进制本身的标志(--uid www-data --gid www-data)并将其设置在我的配置中:

    uid = www-data
    gid = www-data

但套接字总是与我正在使用的帐户一起产生,所以我得到了来自nginx的权限被拒绝的错误。

任何人都知道这是为什么?

附加问题:有人知道nginx和uwsgi具有用户设置吗? 我有另一台服务器一直在工作,它没有在任何配置文件中设置uid或gid,但是一切都在使用www-data。

回答很显然,如果您正在尝试从终端启动服务,即(用户@服务器:〜/ $ uwsgi --uid www-data --gid www-data),它将始终启动并与用户一起运行谁叫它,这解释了为什么我觉得它不服从我的uid和gid标志。 当我如下所述运行它时,它确实以正确的用户/组www数据运行。

更新

我开始使用uWSGI,正如你所说的那样,“sudo service uwsgi start”应该触发这个文件(/etc/init/uwsgi.conf):

description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn

env UWSGI=/home/ccadmin/.local/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log

exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO

然而,用这个配置我的emperor.log文件说:

execvp(): Permission denied [core/emperor.c line 1481]
[emperor] binary path: /home/ccadmin/.local/bin/uwsgi
[emperor] is the uwsgi binary in your system PATH ?
TIME STAMP - [emperor] curse the uwsgi instance cc_uwsgi.ini (pid: ####)
TIME STAMP - [emperor] removed uwsgi instance cc_uwsgi.ini

如果我将--uid和--gid更改为root,那么它一切正常。 它必须是一些简单的许可,但是对于linux来说是新手,我发现很难查明。

另外奇怪的是,它问我关于我的系统路径中的uwsgi二进制文件......是否应该在那里? 因为我在/ etc / environment中将/home/ccadmin/.local/bin添加到了我的系统路径中。 它不应该在那里吗? 还是应该一直到二进制文件? (即将/home/ccadmin/.local/bin/uwsgi insetad添加到/ bin)


你应该以root身份启动uwsgi,否则你不能切换到另一个用户。 基本的unix概念。 通过sudo使用service uwsgi start命令。


暴君模式(安全的多用户主机)

在暴君模式下,皇帝将使用其配置文件的UID / GID运行该封套。

http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html#tyrant-mode-secure-multi-user-hosting

之前我没有使用皇帝模式。 希望可以帮助。

链接地址: http://www.djcxy.com/p/65937.html

上一篇: uWSGI Emperor Permission Denied unless root

下一篇: Running multiple uwsgi python versions