允许非 sudo 用户启动或停止 systemd 服务

Rya*_*ull 6 permissions systemd

我在我的家庭服务器上设置了一个 minecraft 服务器,我想让我的任何朋友都能够自己 ssh 并启动服务器。但是,我不一定要授予他们 sudo 访问权限。

有没有办法可以将特定服务标记为可由任何人或特定组的成员启动或停止?

Mar*_*erg 7

绝对地。虽然sudo与作为 运行任何命令相关联root,但它确实是一个灵活的系统,允许细粒度控制谁有权运行哪些特定命令。

例如,您可以创建一个名为的组minecraftstarters并将您的所有朋友添加到该组中。然后您可以定义一个sudo规则,该规则允许minecraftstarters组中的任何人启动或重新启动 Minecraft,但不能sudo用于其他任何事情。

然后在 中/etc/sudoers.d/minecraft,您将添加如下语法:

Cmnd_Alias MINECRAFT_CMDS = /bin/systemctl start minecraft, /bin/systemctl restart minecraft
%minecraftstarters ALL=(ALL) NOPASSWD: MINECRAFT_CMDS
Run Code Online (Sandbox Code Playgroud)

现在您已经定义了minecraftstarters组可以运行的一些命令sudo(并且不需要额外的密码提示)。

提示:visudo -f /etc/sudoers.d/minecraft用于编辑文件。它将在保存之前检查语法,避免您破坏sudo配置的不幸状态,因此sudo根本不起作用。