通过 python3 内置的 Web 应用程序控制 systemd 服务

通过 python3 内置的 Web 应用程序控制 systemd 服务

我已经在 python3 中创建了一个 Web 应用程序,它使用 WSGI 模块托管在 apache2 Web 服务器上。现在,Web 应用程序的要求之一是它需要根据一些用户输入重新启动 systemd 服务。现在我知道 Python 中有一个 os 库可以帮助我,但由于我的 Web 应用程序以用户 www-data 的身份运行,因此命令由 www-data 执行,而 www-data 不允许启动或停止 systemd 服务。经过一番研究,我发现我们可以通过编辑 sudoers 文件来实现这一点,但我仍然不确定是否应该向 www-data 授予 sudoers 权限。

实现这一目标的最佳方法是什么?因为这将在实时生产环境中进行,我需要牢记哪些安全措施。

需要控制的服务是定制的服务:

sudo systemctl restart kodi.service

平台是Ubuntu 18.04,使用的Web服务器是apache2。

答案1

您正确地将用户添加到 sudoers 文件,但您可以更详细地了解原因。请按照此问题的说明进行操作:

https://unix.stackexchange.com/questions/192706/how-could-we-allow-non-root-users-to-control-a-system-d-service

然后,用户拥有此单个命令所需的所有权限;而不是 systemd 的权限。这可以防止生产中对系统造成最小的安全威胁,并且只对您自己的服务造成威胁。

相关内容