Fehler der OpenSuse-Root-Befehle

0

Kann jemand erklären, warum diese Befehle nicht funktionieren?

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

Und warum arbeiten diese?

me@suse:~> sudo /sbin/ifconfig

.

suse:/home/me # ifconfig

Ich weiß, dass etwas mit root-Benutzer zusammenhängt, aber ich möchte eine bessere Erklärung.

Alexandre Vicenzi
quelle

Antworten:

2

Normalerweise haben Benutzer mit der UID 0 (d. H. Root) eine modifizierte $PATH Set, das enthält Verzeichnisse wie /sbin und /usr/sbin, während 'normale' Benutzer dies nicht haben (da viele Programme in diesen Verzeichnissen Superuser-Berechtigungen erfordern und ohnehin für diese normalen Benutzer nicht viel brauchbar sind) Wenn also ein normaler Benutzer etwas in diesen Verzeichnissen anrufen möchte, das in seinem fehlt $PATHmuss sie den vollständigen Pfad des Programms angeben, während 'root' sie ohne diese Notwendigkeit aufrufen kann.

Berufung sudo <program> funktioniert auch nicht, weil sudo erbt seine Umgebung (und damit $PATH ) aus dem aufrufenden Prozess (der nicht privilegiert ist und daher fehlt) /sbin ).

Sie können dies ausprobieren, indem Sie anrufen echo $PATH eines in der Shell des Benutzers und einmal in einer Root-Shell (nicht mit sudo ).

Andreas Wiese
quelle
Ich habe gerade / usr / sbin zu PATH hinzugefügt und jetzt funktioniert es. Danke für Ihre Erklärung.
Alexandre Vicenzi
Ich frage mich: Woher kennt Suse den absoluten Pfad einer Datei, die sich nicht in $ PATH befindet?
peter