$ 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
需要修改。