![允许非 sudo 用户启动或停止 systemd 服务](https://linux22.com/image/890541/%E5%85%81%E8%AE%B8%E9%9D%9E%20sudo%20%E7%94%A8%E6%88%B7%E5%90%AF%E5%8A%A8%E6%88%96%E5%81%9C%E6%AD%A2%20systemd%20%E6%9C%8D%E5%8A%A1.png)
我的家庭服务器上设置了一个 minecraft 服务器,我想允许我的任何朋友通过 ssh 登录并自行启动服务器。但是,我不一定想给他们 sudo 访问权限。
有没有什么方法可以将某项特定服务标记为可由任何人或特定群组的成员启动或停止?
答案1
当然。虽然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
现在您已经定义了一些minecraftstarters
组可以运行的命令sudo
(并且不需要额外的密码提示)。
提示:使用visudo -f /etc/sudoers.d/minecraft
编辑文件。它会在保存之前检查语法,避免破坏sudo
配置的不幸情况,因此sudo
根本不起作用。