![which 和 sudo 不使用相同的路径](https://linux22.com/image/611676/which%20%E5%92%8C%20sudo%20%E4%B8%8D%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E8%B7%AF%E5%BE%84.png)
$ 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
需要修改。