web-dev-qa-db-ja.com

OpenSuseルートコマンドエラー

これらのコマンドが機能しない理由を誰かが説明できますか

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は呼び出しプロセスから環境(したがってSudo <program>)を継承するため、$PATHの呼び出しも機能しません(特権がないため、/sbinがありません)。

これを試すには、ユーザーのシェルでecho $PATHを呼び出し、ルートシェルで1回呼び出します(Sudoではありません)。

3
Andreas Wiese