これらのコマンドが機能しない理由を誰かが説明できますか
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ユーザーに関連するものであることを知っていますが、より良い説明が必要です。
通常、UID 0(つまりroot)のユーザーには変更された$PATH
セットがあり、これには/sbin
や/usr/sbin
などのディレクトリが含まれますが、「通常の」ユーザーにはありません(これらのプログラムには多くのプログラムがあるため)ディレクトリにはスーパーユーザー権限が必要であり、とにかくそれらの通常のユーザーにはあまり使用できません)。したがって、通常のユーザーが$PATH
にないディレクトリ内の何かを呼び出したい場合は、プログラムのフルパスを指定する必要がありますが、「root」はこの必要なしにそれらを呼び出すことができます。
Sudo
は呼び出しプロセスから環境(したがってSudo <program>
)を継承するため、$PATH
の呼び出しも機能しません(特権がないため、/sbin
がありません)。
これを試すには、ユーザーのシェルでecho $PATH
を呼び出し、ルートシェルで1回呼び出します(Sudo
ではありません)。