/usr/sbin nicht in PATH bzw. wie hat PATH generell auszusehen?

Hallo!

Bei mir steht /usr/bin nicht in PATH:

gunnersson@tulicube:~> export | grep -w 'PATH'
declare -x PATH="/home/gunnersson/bin:/usr/local/bin:/usr/bin:/bin:/snap/bin:/usr/local/bin"

Ist das so richtig? Also dass /usr/sbin nicht dabei ist? Bzw. wie müsste PATH üblicherweise aussehen? Und wenn anders: wo würde ich das am besten modifizieren?

Vielen Dank!

In /usr/sbin liegen Programme, die nicht unbedingt vom User ausgeführt werden sollten.

Wie gesagt:

gunnersson@tulicube:~> export | grep -w 'PATH'
declare -x PATH="/home/gunnersson/bin:/usr/local/bin:/usr/bin:/bin:/snap/bin:/usr/local/bin"

Also /usr/sbin (und /sbin ebenfalls) steht nicht darin!

Weshalb ich frage:
1.

gunnersson@tulicube:~> whereis biosdecode
biosdecode: /usr/sbin/biosdecode /usr/share/man/man8/biosdecode.8.gz
gunnersson@tulicube:~> which biosdecode
which: no biosdecode in (/home/gunnersson/bin:/usr/local/bin:/usr/bin:/bin:/snap/bin:/usr/local/bin)
gunnersson@tulicube:~> sudo biosdecode
# biosdecode 3.4
…mehr…

which zeigt kein biosdecode (es wird der tatsächliche PATH angezeigt, wo /usr/sbin eben nicht dabei ist!) — dagegen zeigt aber whereis schon. Außerdem kann ich es mit sudo biosdecode direkt aus dem Heimverzeichnis meines regulären Users (~) ausführen. Ich brauche also nicht etwa, sudo /usr/sbin/biosdecode aufzurufen, wie ich vielleicht vermutet hätte.

Ist es so (dass mein PATH im Wesentlichen OK ist und) dass sudo zusätzlich zu PATH explizit noch in /user/sbin (und eventuell auch /sbin — ich habe es jetzt noch nicht überprüft) nachguckt?

Ja, schon…

Aber deswegen rufe ich sie ja explizit mit sudo <cmd> oder su -c <cmd> oder xdg-su -c <cmd> auf. Aber dass sie gar nicht in PATH stehen…?

Siehe dazu auch meinen anderen Beitrag gerade eben.

sudo erweitert zu Root und hat damit die root $PATH variable

stephan@linux64:~> echo $PATH
/home/stephan/.local/bin:/home/stephan/bin:/usr/local/bin:/usr/bin:/bin
stephan@linux64:~> su -l
Passwort: 
linux64:~ # echo $PATH
/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin
linux64:~ # 

1 Like

Ah, vielen herzlichen Dank!

Das war mir nicht bewusst. Und wieder was gelernt. Vielen Dank!

su -

heißt auch

su -l

und das ist kurz für

su --login

und damit erreicht man ein root login shell. Was wieder bedeutet das man die “process environment” von root bekommt und also auch PATH von root.

Ich benutze sudo nicht, aber nehme an das da dasselbe passiert.

sudo sollte man bei openSUSE meiden, in 99% aller Fälle wird es zwar funktionieren, aber in 1 % nicht.
Da haben wir dann schon im Forum lange Beiträge gehabt, weil etwas nicht funktionierte und hinterher stellte sich raus, das mit sudo gearbeitet wurde.

Lösung war:
den Befehl in einer root-Loginshell (siehe Beitrag @hcvv ) auszuführen und schon passierte, was zu erwarten war.

Daher bitte bei openSUSE nicht mit sudo arbeiten, sudo ist bei openSUSE nicht so konfiguriert wie in anderen Distributionen.
Und sudo ist auch gar nicht für so etwas entwickelt worden, sondern um bestimmten User bestimmte Rechte zu erteilen und gerade keine root Rechte.

1 Like

Danke, @Sauerland !

Dass man mit sudo, suund so generell aufpassen soll, ist mir bewusst.

Aber ich wusste noch nicht:

Das hatte ich so tatsächlich noch nicht mitbekommen. Wie, außer hier im Forum, hätte man das denn wissen sollen?

Ich werde mir das mal merken. Ich werde das jetzt so machen:

  • Wenn eigentlich ein sudo reichen würde, werde ich vorerst weiterhin sudo nehmen.
  • Aber wenn es mal ein ernsthaftes Problem gibt, werde ich daran denken und su versuchen.
  • In bestimmten Situationen nehme ich heute schon generell su -.
  • Für meine Starter in der GUI von Xfce nehme ich xdg-su -c <cmd>.

Ich benutze KDE und normalerweise nimm ich da vom Hauptmenu > System > Terminal Super User Mode. Das bringt Konsole wo das su - schon gemacht worden ist. Brauche ich nur noch das Password von root.

Danke für den Hinweis. Interessant!

KDE ist mir zu mächtig (in vielen Belangen). Deshalb Xfce.

Das ist natürlich fein. Ich weiß aber nicht ob Xfce auch so ein directer Start von root Terminal hat. Ist warscheinlich leicht zu bauen.

@Sauerland

Wie wäre das jetzt bezüglich zu generellen Commands wie

zypper update

wäre es da auch besser erst:
su- und dann zypper updatezu benutzen?

zypper update
Root-Rechte werden benötigt um dieses Kommando auszuführen.

Ich verstehe die Frage nicht.
Wir reden hier nur über die verschiedene Methoden um, aus gehend davon das man ein “normalen” Benutzer ist, ein Prozess mit Eigner root zu starten. Ob das Prozess nun zypper oder etwas anderes ist, ist unwichtig.

Man kann darüber diskutieren welche Methode die “beste”, und/oder die “vernünftichste” und/oder die “einfachste” ist, aber letzendlich entsheidet jeder selbst.

Also, jeder Systemverwalter benutzt tagtäglich seine beliebte Methode. Für systemctl, für zypper, für was auch immer.

Ich habe meine Frage schlecht ausgedrückt.

Dass ich superuser Rechte brauche, um zypper update ausführen zu können, ist mir klar.

Meine Frage bezog sich auf:

Kann die Benutzung von sudo im Falle eines einfachen Systemupdates, wie bei der Benutzung des Commands sudo zypper update auch Probleme hervorrufen, und sollte man aus diesem Grund auch meiden, sudo zypper update zu benutzen, und stattdessen eher:

su-
zypper update

benutzen?

Mir war ebenfalls (wie @C7NhtpnK ) nicht bewusst, dass der Command sudo, zu Problemen führen konnte. Ich habe früher Debian benutzt. In Debian wird generell empfohlen, sudo statt su- zu benutzen, damit es nicht zu versehentlichen Änderungen kommt, die das System gefährden könnte (löschen mancher Dateien, oder entfernen mancher Abhängigkeiten die das System brechen können) - das passiert nämlich ziemlich leicht, wenn man mal nicht genau nachschaut welche Abhängigkeiten gelöscht werden sollten, besonders wenn man apt remove * oder apt autoremove benutzt.

Da ich genau aus diesen Gründen, immer sudo, statt su- benutze, frage ich hier lieber nochmal nach.

So lange wie es funktioniert, kann man es benutzen, das Problem ist, das man nicht sieht, das es nicht funktioniert…

Ich habe mir angewöhnt, eine Loginshell zu benutzen, der Mensch ist ein Gewohnheitstier…

So weit ich weiß, hat Debian aber auch keinen User root standardmäßig installiert, das muss man erst selber machen.

1 Like

Ich benutzte su - schon bevor es überhaupt sudo gab.
Also diese Gewohnheit spielt mit in meine Aussagen. :wink:

Alle extras die sudo bietet brauche ich (und du warscheinlich auch) nicht. Also wozu ein viel komplizierteres Program nutzen? Auserdem habe ich die letze Jahre verschiedene “security updates” für sudo vorbeikommen sehen, was mein Vertrauen natürlich auch nich verbesserte,

Buchstablich kann das nicht richtig sein, da es immer ein Benutzer mit UID=0 geben muß. Das die aber einen ganz verschiedene Blick auf diese Sachen haben ist klar.

1 Like

Ich bin mir nicht sicher ob @Sauerland das meinte: Auf Debian ist der Benutzer nicht von vornherein in der Sudo-Gruppe, man muss den Benutzer immer erst einmal in die Sudo-Gruppe (Sudoers-Datei) hinzufügen und erst dann kann man sudo ausführen.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.