到目前为止,我们的 sudoers 文件中有两行,因为systemctl
有时在/usr/bin
,有时在/bin
(取决于 Linux 发行版):
foo ALL = NOPASSWD: /usr/bin/systemctl restart foo.service
foo ALL = NOPASSWD: /bin/systemctl restart foo.service
有没有可行的方法可以将其写在一行中?
答案1
可以在 sudoers 文件中指定多个命令,用逗号分隔它们。对于使用 systemctl 的示例,该行将是
foo ALL = NOPASSWD: /usr/bin/systemctl restart foo.service, /bin/systemctl restart foo.service
答案2
只需写入以下 sudo 行即可:
foo ALL = NOPASSWD: /bin/systemctl restart foo.service
根据 systemd 开发人员的说法,正确的位置是/usr/bin/systemctl
,但默认的 Debian/Ubuntu 不遵循这个“usr-merge”。
幸运的是,完成 usr-merge 的发行版提供了符号链接。
这意味着/bin/systemctl
适用于所有发行版。
有关的:https://askubuntu.com/questions/1164035/why-bin-systemctl