which 和 sudo 不使用相同的路径

which 和 sudo 不使用相同的路径
$ which reboot

/usr/bin/reboot

$ sudo reboot

Sorry, user myusername is not allowed to execute '/sbin/reboot' as root

我在这里遗漏了什么?

答案1

我认为这和这个问题有关:

https://stackoverflow.com/questions/257616/sudo-changes-path-why

因此 sudo 会更改路径,但会将其原封不动地传递给命令。因此,它使用 /sbin/reboot 作为 reboot 命令,但会将通常的路径传递给 which 命令(后者会在 /usr/bin/reboot 中找到 sudo)。

答案2

当您以 root 身份运行命令时,sbin 文件夹中的文件比路径中的其他文件夹具有更高的优先级。这就是 sudo 选择 /sbin/reboot 的原因。您必须在 sudoers 文件中使用 /sbin/reboot,或者必须明确调用 sudo /usr/bin/reboot

答案3

这说明您的sudo权限不包括使用该reboot应用程序的能力。PATH 未被修改;它可以reboot正常找到。

cat /etc/sudoers,并根据visudo需要修改。

相关内容