授予用户 sudo 权限来启动/停止/等 systemd 服务,无需 sudo 密码

Ama*_*rus 4 sudo systemd

我有一个非 root 用户,我想授予他们 sudo 权限来启动和停止(等)systemd 服务文件,而无需密码。

\n

我尝试在/etc/sudoers.d/servicename (其中[username][servicename]是实际名称)中创建以下文件:

\n
[username] ALL=(root) NOPASSWORD: systemctl start [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl stop [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl restart [servicename]\n
Run Code Online (Sandbox Code Playgroud)\n

(对许多系统命令重复,例如reload// try-restart/ enable\xe2\x80\xa6)

\n

visudo告诉我这是一个语法错误。我该如何解决这个问题?

\n

我想放入脚本(正在以非 root 用户身份运行)sudo systemctl stop [servicename]

\n

Ubuntu Linux 18.04,来自 ubuntu 的 systemd(这是 v245)。我也希望它能在 Ubuntu 20.04 上运行。

\n

小智 8

您可以通过使用以下内容来实现您想要的:

Cmnd_Alias USER_SERVICES = /usr/bin/systemctl start [servicename], /usr/bin/systemctl stop [servicename], /usr/bin/systemctl restart [servicename]

[username] ALL=(ALL) NOPASSWD:USER_SERVICES
Run Code Online (Sandbox Code Playgroud)

您可以通过在命令之间放置逗号 (,) 向 USER_SERVICES 添加更多命令。始终使用命令的完整路径。