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

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

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

我尝试在/etc/sudoers.d/servicename (其中[username][servicename]为实际名称)

[username] ALL=(root) NOPASSWORD: systemctl start [servicename]
[username] ALL=(root) NOPASSWORD: systemctl stop [servicename]
[username] ALL=(root) NOPASSWORD: systemctl restart [servicename]

(重复许多系统命令,例如reload/ try-restart/ enable/…)

visudo告诉我这是语法错误。我该如何修复?

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

Ubuntu Linux 18.04,来自 ubuntu 的 systemd(对于此版本为 v245)。我也希望它能在 Ubuntu 20.04 上运行。

答案1

您可以使用以下命令实现您想要的功能:

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

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

答案2

您需要在sudoers文件中添加具有所需权限/命令的用户/组。执行以下命令打开sudoers文件(执行此命令需要 root 权限或 sudo 访问权限

> sudo visudo

然后在末尾添加以下行并保存文件(要保存更改并退出 vim,请按ESC,然后输入:wq--> 按enter

%[group] ALL=([username]) NOPASSWD: ALL

%[group] ALL=NOPASSWD: /bin/systemctl start [servicename],/bin/systemctl stop [servicename],/bin/systemctl restart [servicename]

相关内容