如何允许用户启动/停止特定的系统服务?

如何允许用户启动/停止特定的系统服务?

我正在构建一个服务器,我的学生将能够在该服务器上上传他们的项目,这些项目是 Python+Flask Web 应用程序。当我添加新用户时,我会在 中添加一个新服务/etc/systemd/system/[username].service,该服务会自动运行用户应用程序。

我希望允许每个用户启动、停止和重新启动自己的服务,但不允许其他人的服务。因此 Alice 可以执行 eg service Alice restart,Bob 也可以执行service Bob restart,但反之则不行。

这可能吗?

答案1

可以通过如下解决方法来实现:

  1. /usr/local/bin为每个用户创建一个 Bash 脚本(可执行) (<user>.sh为了举例说明)。

  2. 每个用户的脚本仅运行命令来重新启动该用户的服务,例如:systemctl restart <user>
    (如果您有创造力,您可以向该脚本添加不同的功能来启动、停止和重新启动所述服务。)

  3. 向文件中添加sudoers每个用户仅运行自己的脚本的功能。这已完成像这样(在本# User节下):

    # User
    <user> ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/<user>.sh
    

现在每个用户都可以运行自己的服务/usr/local/bin/<user>.sh而无需输入密码,这将重新启动他们的服务(或执行您允许脚本执行的任何操作)。

答案2

目前还无法按单位进行,但希望很快就能实现。https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/154已合并并发布

相关内容