我已经在 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 文件,但您可以更详细地了解原因。请按照此问题的说明进行操作:
然后,用户拥有此单个命令所需的所有权限;而不是 systemd 的权限。这可以防止生产中对系统造成最小的安全威胁,并且只对您自己的服务造成威胁。