You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

uWSGI vassal未以指定cuckoo用户启动 权限异常问题求助

问题根因

你当前的问题核心是emperor-tyrant = true配置导致的:uWSGI Emperor开启暴君模式后,会完全忽略vassal配置文件内的uid、gid参数,强制以vassal配置文件的属主身份运行对应vassal进程。你当前/etc/uwsgi.d/cuckoo.ini属主为uwsgi:uwsgi,所以就算你在vassal配置里指定了uid = cuckoo也不会生效,最终vassal进程和创建的socket都归属uwsgi用户。

解决方案步骤

步骤1:修改vassal配置文件属主

执行命令匹配暴君模式的规则,让Emperor自动以cuckoo用户启动cuckoo vassal:

chown cuckoo:cuckoo /etc/uwsgi.d/cuckoo.ini

步骤2:修复socket目录权限

首先修改现有/var/run/cuckoo目录属主,确保cuckoo用户有权限在该目录下创建socket:

chown cuckoo:cuckoo /var/run/cuckoo

由于CentOS 7中/var/run是tmpfs临时文件系统,重启后目录会被重置,所以需要创建持久化权限配置:
新建/etc/tmpfiles.d/cuckoo.conf,写入以下内容:

d /var/run/cuckoo 0755 cuckoo cuckoo -

步骤3:调整权限配置(可选但推荐)

你当前vassal配置里chmod-socket = 766权限过大,socket不需要执行权限,建议改为660,同时将nginx用户加入cuckoo组,保证Nginx可以正常读写socket:

usermod -aG cuckoo nginx

再修改/etc/uwsgi.d/cuckoo.ini中的chmod-socket参数值为660即可。

步骤4:重启服务验证

重启uWSGI服务:

systemctl restart uwsgi

按以下维度验证效果:

  • 查看socket属主:执行ls -l /var/run/cuckoo/cuckoo.sock,应该显示归属cuckoo:cuckoo
  • 查看vassal进程运行用户:执行ps aux | grep uwsgi,可以看到cuckoo对应的worker进程属于cuckoo用户
  • 测试Nginx转发写入的文件,属主应为cuckoo

内容的提问来源于stack exchange,提问作者Astron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:03