我在没有 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
.