未找到命令,但适用于 sudo

未找到命令,但适用于 sudo

我在没有 GUI 的情况下安装了 Debian GNU/Linux 10 (buster) x86_64,并创建了一个用户并授予其 sudo 访问权限。用户确实具有 sudo 访问权限,但类似shutdown​​或 之类的命令reboot仅在使用 sudo 时才有效。根据我的经验,我从来不需要使用 sudo 运行这些命令。我该如何修复它?

$ whoami
amir
$ id amir
uid=1000(amir) gid=1000(amir) groups=1000(amir),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)
$ reboot
zsh: command not found: reboot
$ sudo which reboot
/usr/sbin/reboot
$ sudo grep amir /etc/sudoers
amir    ALL=(ALL:ALL) ALL
$ sudo grep "^sudo" /etc/sudoers
sudo    ALL=(ALL:ALL) ALL

答案1

这是由于 PATH 变量的默认配置造成的。 PATH 设置 shell 将在何处搜索特定命令。

默认情况下,Debiansudo会更改您的 PATH。这样做的部分原因是为了安全。但这里它还为您添加了一些内容。

即它添加:/sbin/usr/sbin

您可以通过输入以下内容来查看:

echo $PATH

sudo bash -c 'echo $PATH'

此行为在几个地方受到控制。首先 sudo 的行为被控制在/etc/sudoers

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

您自己的用户的 PATH 是在 中控制整个系统的/etc/profile/etc/bash.bashrc您的用户的个人设置位于您的主目录 ( ~) 中的文件~/.profile和 中~/.bashrc

在这些文件中,您可能会看到行发生变化,并且export PATH.

相关内容