ubuntuusers.de

$PATH und die Ubuntu-Nicht-Login-Shell

Status: Gelöst | Ubuntu-Version: Ubuntu 5.10 (Breezy Badger)
Antworten |

nolaw

Anmeldungsdatum:
17. Juni 2005

Beiträge: 277

Hallo,

dank ubuntuusers weiß ich jetzt, dass Ubunutu eine sog. "nicht-login-shell" verwendet. Dann wird beim Einloggen nicht die .bash_profile, sondern die .bashrc geladen. Dort finde ich aber keine Definition der $PATH-Variable.

Wo, in welcher Datei, ist die Variable in Ubuntu definiert?

Grüße

haraldkl

Avatar von haraldkl

Anmeldungsdatum:
21. Juli 2005

Beiträge: 1903

Wohnort: Würselen

Was möchtest du denn tun?
Schau dir mal die Wiki-Seite Umgebungsvariable an. Vielleicht hilft dir das weiter. 😉

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Wahrscheinlich möchte er im Gnome-Terminal eine Login-Shell erhalten. Rechtsklick->Momentan verwendetes Profil->Titel und Befehl->Befehl als Login-Shell starten.

PATH wird systemweit in /etc/profile eingestellt.

nolaw

(Themenstarter)

Anmeldungsdatum:
17. Juni 2005

Beiträge: 277

Danke

über PATH=$PATH:/mein/Pfad/zu/meinen/skripten den Pfad zu meinen Skripten übergeben

Grüße

m.kossner

Anmeldungsdatum:
29. Januar 2006

Beiträge: 49

Ich habe in der /etc/profile das Verzeichnis meiner scripte in die PATH-Variable eingetragen.
wenn ich jetzt das script starte, dann läuft es.
Starte ich es aber mit sudo, dann kommt:

sudo: oesetup: command not found (oesetup ist der Name des scriptes)

Ich glaube das liegt daran, dass ich mit sudo eine subshell öffne (siehe http://forum.ubuntuusers.de/topic/44747/?highlight= )

Diese lädt aber wohl nicht die /etc/profile.
Was aber dann?

mit /root/profile, oder bashrc?
aber dann steht mein suchpfad in jeder Path-variablen, auch wenn win anderer sudo macht, oder?

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Hast du in dem Pfad die Abkürzung '~' verwendet?

m.kossner

Anmeldungsdatum:
29. Januar 2006

Beiträge: 49

export PATH=/home/markus/scripte:$PATH

Diesen Eintrag hatte ich erst in der .bashrc meines home-Verzeichnises. Damit klappt wie gesagt auch alles, ausser wenn ich sudo vor den script-Namen setze.
Darauf hin habe ich genau diese Zeile auch in die /root/.bashrc eingetragen. Das bringt aber auch nichts.

Gibt es eigentl. einen Wiki-Eintrag zum Thema Shell, subshell, ...? Und vor allem dazu, welche Configurationsdatei bei welchen shells, subshells... geladen werden?

Naja, ich werde mal in allen möglichen .profile, .bashrc... herumpfriemeln. Melde mich, wenn ich erfolgreich war.

Bin aber immer noch för guten Rat dankbar!

Markus

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

m.kossner hat geschrieben:

Diesen Eintrag hatte ich erst in der .bashrc meines home-Verzeichnises. Damit klappt wie gesagt auch alles, ausser wenn ich sudo vor den script-Namen setze.
Darauf hin habe ich genau diese Zeile auch in die /root/.bashrc eingetragen. Das bringt aber auch nichts.

Hast du dir die Variable $PATH mal als sudo ausgeben lassen (sudo echo $PATH)?

m.kossner hat geschrieben:

Gibt es eigentl. einen Wiki-Eintrag zum Thema Shell, subshell, ...? Und vor allem dazu, welche Configurationsdatei bei welchen shells, subshells... geladen werden?

Einen entsprechenden Wikieintrag habe ich nicht gefunden, aber in der Linuxfibel gibt es ein Kapitel: http://www.linuxfibel.de/bash.htm#start

Gruß
Christian

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Ok. Ich hab mal nachgeforscht. Sudo wird für Ubuntu mit der Option --with-secure-path kompiliert, was bedeutet, dass die Umgebungsvariable PATH ignoriert wird, und stattdessen ein fest eingebauter Pfad benutzt wird.

Grund dafür ist wahrscheinlich, dass die PATH-Variable standardmäßig ~/bin am Anfang beinhaltet und ein Angreifer das zur Erhöhung der Privilegien nutzen könnte, indem er nach einem Einbruch in ein Benutzerkonto ein böses Programm bspw. nach ~/bin/apt-get kopieren könnte, was dann vielleicht schon bald vom regulären Benutzer mit Root-Rechten ausgeführt würde.

Es gibt aber auch Leute, die mit dieser Regelung nicht zufrieden sind, und das als "Wishlist-Bug" gemeldet haben: https://launchpad.net/distros/ubuntu/+source/sudo/+bug/50797

Ebenfalls aus dem Bugreport stammt der folgende Workaround:

sudo env PATH=$PATH <command>

Durch Eintrag folgender Zeile in ~/.bashrc kann man dieses Verhalten für sudo standardmäßig erzwingen:

alias sudo='sudo env PATH=$PATH'

Im übrigen verschiebe ich diesen Thread mal nach "Sicherheit".

m.kossner

Anmeldungsdatum:
29. Januar 2006

Beiträge: 49

Das heist also, dass es die Datei, nach der ich suchte, gar nicht gibt. Der Pfad ist fest kompiliert!
Aus Sicherheitsgründen ist das ja auch nicht die dümmste Idee!
Ich denke mit dem alias ist eine recht gute Lösung meiner Probleme gefunden.

Wie immer habt ihr mich ein ganzes Stück schlauer gemacht...

...Danke schön!!!

Markus

Antworten |