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_groupangegebenen Gruppe
Option werden nicht vonsecure_pathbeeinflusst . Diese Option ist nicht
standardmäßig gesetzt. -
sudo – einen Befehl als ein anderer Benutzer ausführen