首页 > 解决方案 > uWSGI vassal 没有以正确的权限生成

问题描述

我有一个我希望以cuckoo用户身份运行的附庸。vassal 创建一个 Nginx 可以读取和写入的套接字。uwsgi目前,只有当用户权限应用于 socket时,vassal 才会生成/var/run/cuckoo/cuckoo.sock。当数据发布到 Nginx 并发送到 vassal 以写入文件系统时发生的问题,数据是使用uwsgi而不是cuckoo用户权限写入的。下面是各自的配置。关于如何正确创建具有权限的 vassal 及其各自的套接字cuckoo以便通过进程写入的数据将作为cuckoo用户写入的任何想法?

/etc/uwsgi.ini

[uwsgi]
uid = uwsgi
gid = uwsgi
emperor = /etc/uwsgi.d
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid

/etc/uwsgi.d/cuckoo.ini

[uwsgi]
socket = /var/run/cuckoo/cuckoo.sock
chmod-socket = 766
plugins = python
virtualenv = /opt/cuckoo/cuckoo-virtual-env
module = cuckoo.apps.api
callable = app
uid = cuckoo
gid = cuckoo
env = CUCKOO_APP=api
env = CUCKOO_CWD=/opt/cuckoo/cuckoo-working-dir

套接字权限

$ ls -l /var/run/cuckoo/
total 0
srwxrw-rw-. 1 uwsgi uwsgi 0 Nov  5 13:47 cuckoo.sock
$ ls -l /run/uwsgi/
total 4
srw-rw----. 1 uwsgi uwsgi 0 Nov  5 13:47 stats.sock
-rw-r--r--. 1 uwsgi uwsgi 6 Nov  5 13:47 uwsgi.pid

配置权限

$ ls -l /etc/uwsgi.*
-rw-r--r--. 1 uwsgi uwsgi  117 Nov  5 13:46 /etc/uwsgi.ini

/etc/uwsgi.d:
total 4
-rw-r--r--. 1 uwsgi uwsgi 288 Nov  5 04:22 cuckoo.ini

标签: linuxsocketspermissionsuwsgi

解决方案


由于我们没有尝试托管多个应用程序,因此解决方法是以uwsgi应用程序用户身份运行,在我们的例子中,cuckoo用户:

/etc/uwsgi.ini

[uwsgi]
uid = cuckoo
gid = cuckoo
emperor = /etc/uwsgi.d
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid

并更新了配置权限:

$ ls -l /etc/uwsgi.*
-rw-r--r--. 1 cuckoo cuckoo  118 Nov  5 18:00 /etc/uwsgi.ini

/etc/uwsgi.d:
total 4
-rw-r--r--. 1 cuckoo cuckoo 270 Nov  5 17:54 cuckoo.ini

这允许 vassal 正确生成并且 Nginx 可以访问套接字。


推荐阅读