除非是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