让普通用户用 /etc/sudoers 重启服务

Foo*_*Bar 11 sudo systemd

我有一项服务 ( kado-demo.service),普通用户 ( kado) 应该能够在不输入任何密码的情况下重新启动它。

我创建/etc/sudoers.d/user_restart并添加了

kado ALL=NOPASSWD: /bin/systemctl restart kado-demo.service
Run Code Online (Sandbox Code Playgroud)

权限:

-r--r-----   1 root root   585 Mar  5 10:47 user_restart
Run Code Online (Sandbox Code Playgroud)

作为用户 k,我现在应该能够执行给定的命令,但发生了这种情况:

/bin/systemctl restart kado-demo.service
 ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
 Authentication is required to restart 'kado-demo.service'. 
 Multiple identities can be used for authentication:
  (...)
Run Code Online (Sandbox Code Playgroud)

这与我添加文件之前的结果相同。

/etc/sudoers包含

#includedir /etc/sudoers.d
Run Code Online (Sandbox Code Playgroud)

当我将user_restart文件内容直接添加到/etc/sudoers.

我的想法不多了...

Olo*_*rin 15

sudoers生效,您实际上必须使用sudo. :) 做:

sudo systemctl restart kado-demo.service
Run Code Online (Sandbox Code Playgroud)

它不会要求输入密码。

如果您不使用sudo,则systemctl回退到使用Polkit进行授权。

  • 我不知道它在哪里记录(它可能记录在某处),但问题中的提示是 Polkit 提示:它将生成 polkit 日志消息,如果 GUI polkit 身份验证代理处于活动状态,它将无缝地使用 GUI 提示(就像它通常在 Ubuntu 上一样)。 (2认同)