有人能解释一下为什么这些命令不起作用吗
me@suse:~> ifconfig
Absolute path to 'ifconfig' is '/sbin/ifconfig', so running it may require superuser privileges (eg. root).
。
me@suse:~> sudo ifconfig
root's password:
sudo: ifconfig: command not found
为什么这些有效
me@suse:~> sudo /sbin/ifconfig
。
suse:/home/me # ifconfig
我知道这与 root 用户有关,但我想要更好的解释。
答案1
通常,UID 为 0 的用户(即 root)具有修改后的$PATH
集合,其中包括/sbin
和等目录/usr/sbin
,而“普通”用户则没有(因为这些目录中的许多程序都需要超级用户权限,而且对于普通用户来说,它们用处不大)。因此,如果普通用户想要调用其目录中缺少的任何内容$PATH
,则必须指定程序的完整路径,而“root”无需此操作即可调用它们。
调用sudo <program>
也不起作用,因为它从调用进程(没有特权,因此缺少)sudo
继承了它的环境(因此继承了) 。$PATH
/sbin
echo $PATH
您可以通过在用户 shell 中调用一次并在 root shell 中调用一次(不是用)来尝试这一点sudo
。