Ich habe Eclipse in meinem Home-Verzeichnis installiert und seinen Pfad in PATH
eingefügt in ~/.profile
.
Es funktioniert also mit
$ eclipse
Aber wenn man es mit sudo
aufruft , eclipse
nicht gefunden:
$ sudo eclipse
sudo: eclipse: command not found
Welcher PATH
macht sudo eclipse
verwenden, um nach eclipse
zu suchen ? Ist es der Benutzer root
's PATH
?
Danke.
Akzeptierte Antwort:
sudo
verwendet standardmäßig ein Minimal PATH
, um es für die Verwendung durch root sicher zu machen Benutzer. Das ist nicht unbedingt dasselbe wie der PATH
würden Sie erhalten, indem Sie sich als root anmelden Benutzer oder indem Sie
sudo su -
In neueren Red Hat-Versionen ist mir beispielsweise aufgefallen, dass der Pfad /usr/local/bin
auslässt .
Die Handbuchseite fasst dies in einem Abschnitt mit dem Titel Sicherheitshinweise zusammen :
sudo versucht, beim Ausführen externer Befehle sicher zu sein.
Es gibt zwei verschiedene Möglichkeiten, mit Umgebungsvariablen umzugehen. Standardmäßig ist die Datei env_reset
sudoers
Option ist aktiviert. Dadurch werden Befehle mit einer minimalen Umgebung ausgeführt, die TERM
enthält , PATH
, HOME
, SHELL
, LOGNAME
, USER
und USERNAME
zusätzlich zu Variablen aus dem aufrufenden Prozess
erlaubt durch env_check
und env_keep
sudoers Optionen. Es gibt praktisch eine Whitelist für
Umgebungsvariablen.
Weiterführende Literatur:
-
sudoers – Liste, welche Benutzer was ausführen dürfen
secure_path
Pfad, der für jeden Befehl verwendet wird, der von sudo ausgeführt wird. Wenn Sie den Leuten, die sudo ausführen, nicht vertrauen, dass sie
eine vernünftige PATH-Umgebungsvariable haben, sollten Sie diese verwenden. Eine andere Verwendung ist, wenn Sie
möchten, dass der „Stammpfad“ vom „Benutzerpfad“ getrennt ist. Benutzer in der durchexempt_group
angegebenen Gruppe
Option werden nicht vonsecure_path
beeinflusst . Diese Option ist nicht
standardmäßig gesetzt. -
sudo – einen Befehl als ein anderer Benutzer ausführen