Was passiert mit meiner Umgebung, wenn ich sudo starte?
Wenn ich renne sudo command
, sieht es anscheinend nicht die Umgebung von mir oder root. Beispielsweise enthält mein Pfad für beide /usr/local/bin
, aber wenn ich versuche, eines der Programme ohne den vollständigen Pfad auszuführen, schlägt dies fehl.
Ich dachte, sudo lief als root und bekam daher root`s Umgebung. Gibt es eine andere Art und Weise, wie bash unter sudo ausgeführt wird als unter root oder meinem normalen Benutzer?
BEARBEITEN:
Ich habe in sudo -i
letzter Zeit verwendet, aber in letzter Zeit hat es Probleme verursacht, weil mein aktuelles Arbeitsverzeichnis auf festgelegt wird /root
. Das ist wie erwartet (sorta), aber ich verstehe immer noch nicht, warum sudo meine ausführbaren Dateien in nicht erkennt /usr/local/bin
.
BEARBEITEN:
Ich verwende Fedora 15.
quelle
PATH
, und manchmal ist es nicht einfach zu finden, wer es zuletzt überschreibt. Es kann sich um eine Systemeinstellung (z. B. in PAM), sudo selbst oder ein nachfolgendes Profilskript handeln.Antworten:
Ich weiß nichts über die Standardeinstellungen unter Fedora, aber unter Debian wird
sudo
standardmäßig diesecure_path
Option mit einem Standardwert von verwendet/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Dies bedeutet, dass der Pfad bei jeder Verwendung auf diesen Wert geändert wird
sudo
. aber wenn du benutztsudo -i
, wird der Pfad danach von den RC-Dateien des Root-Benutzers geändert.quelle
secure_path
Option. Die Standardeinstellung war/usr/local/bin
in meiner Installation nicht enthalten . Danke, das hat wirklich geholfen, die Dinge zu klären!Sie können dies ganz einfach mit Dingen wie überprüfen
Vergleichen Sie die Ausgabe von
Und solche Sachen
Auf diese Weise können Sie herausfinden, was in Ihrem Setup fehlt.
quelle
/usr/local/bin
ist nicht in meinem sudo env, aber es ist in meinem root env und user env. Warum ist das?root
wie erwartet zurück. Was könnte dazu führen, dass mein sudo env anders ist als mein root env?/usr/local/bin
root`s Pfad hinzu (musste ich das leider manuell machen)?Das
sudo -i
Befehl simuliert die Erstanmeldung. Auf meinem Debian-System heißt es außerdem:quelle
Sie können
sudo
denenv_keep
Parameter von 's so anpassen , dass er einschließtPATH
. Beachten Sie dabei jedoch die Auswirkungen auf die Sicherheit.... startet Ihr
$EDITOR
, dann können Sie nach Bedarf Änderungen anDefaults env_keep =
... vornehmen .Sie können dem Systempfad auch / usr / local / bin hinzufügen, indem Sie Dateien hinzufügen
/etc/profile.d
.z.B:
quelle
sudo
hat spezielle Handhabung,PATH
so dass Sie dies nicht tun sollten.