sudo:/usr/bin/systemctl 与 /bin/systemctl

sudo:/usr/bin/systemctl 与 /bin/systemctl

到目前为止,我们的 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

相关内容