在uWSGI运行的flask应用程序中以sudo身份运行shell脚本时发生身份验证错误



收到github的webhook请求后,我正在使用shell脚本重新启动我的flask应用程序,但我遇到了一个没有密码sudo身份验证的问题,但只有当uWSGI运行重新启动功能时。

我将应用程序部署为systemd服务,为了重新启动服务,我必须将systemctl restart myapp.service作为sudo运行。因此,我将这一行插入到一个脚本中,并将其标记为可以像sudo一样运行,而无需运行Web应用程序的用户在/etc/sudoers中进行密码验证。

重启功能非常简单:

import os

def on_push():
os.setuid(os.geteuid())
os.system('sudo /path/to/script.sh')

脚本本身就是一行代码:

systemctl restart myapp.service

在正常的python shell中通过os.system('sudo /path/to/script.sh')运行该命令可以按预期重新启动应用程序,而无需询问密码。但是,当命令由uWSGI工作进程运行时,它无法重新启动,并显示消息Interactive authentication required

这是一个可以通过更改uWSGI启动参数来解决的问题吗?

原来我需要在用于启动uWSGI实例的.ini文件中将uidgid设置为用于运行应用程序的用户/组。

最新更新