Ist es eine schlechte Übung, die root-Shell auf einen anderen Wert als den Standardwert festzulegen?

16

Ein Freund von mir (der ein erfahrener Unix / Linux-Benutzer ist) hat mir einmal gesagt, dass das Setzen der root-Shell auf etwas anderes als sh (dh bash oder zsh) Probleme verursachen könnte, da einige Skripte annehmen könnten, dass die Shell sh ist und etwas Seltsames tun .

Ich denke jedoch, dass Ubuntu die Standard-Root-Shell auf bash gesetzt hat und Gentoo auch bash verwendet. Kann jemand den Mythos zunichte machen?

phunehehe
quelle

Antworten:

12

Ja. Wenn das System beim Booten ausfällt, können Sie sich bei der Root-Shell anmelden. Wenn Sie separate / usr haben, können einige Shells möglicherweise nicht erfolgreich gestartet werden.

Ich würde raten, ein Konto toor(UID 0, GID 0) mit einer nicht-Standard-Shell zu erstellen , während Root mit der Standard-Shell belassen wird.

Maciej Piechotka
quelle
Dies passierte mir, als ich ein Upgrade von FBSD 7.2 auf 8.0 durchführte und vergaß, es neu zu erstellen bash. Ich habe im Einzelbenutzermodus gebootet, um das Problem zu beheben, aber es funktionierte nur, weil /bin/shnoch eine Verknüpfung zu FBSD's Fork' bestand bourneund nicht bash.
gvkv
nur um die sachen klarer zu machen, wenn ich sagen installiere zshund irgendwie /usrbeschädigt bin werde ich problem haben? aber mein system hat /bin/shhinweis auf /bin/bashund sich bashselbst, warum wäre das nicht shbetroffen?
Phunehehe
1
Die Standardeinstellungen für root "garantieren", dass das System bootet. Im Upgrade-Handbuch wird darauf geachtet, dass Sie sich mindestens bei root anmelden können. Für alles andere ist dies jedoch möglicherweise nicht der Fall. Die Lösung besteht darin, das Root-Konto von toor mit einer nicht standardmäßigen Shell für den täglichen Gebrauch zu duplizieren und das Root-Konto so zu belassen, wie es ist.
Maciej Piechotka
1
zshsollte nicht in sein, /usr/bin/wenn es falsch installiert wurde. Alle Schalen sollten in sein/bin
xenoterracide
1
@xenoterracide: zsh unter Gentoo ist in /bin, behält aber einige Dateien bei /usr/share. Außerdem habe ich klar angegeben, dass das Problem beim Anmelden während des Startvorgangs auftritt (wenn ein Dienst ausfällt).
Maciej Piechotka
7

Sollte kein Problem sein.

Shell-Skriptdateien kodieren explizit, mit welcher Shell sie ausgeführt werden. Es wird in der ersten Zeile codiert oder andere Programme oder Skripte führen eine bestimmte Shell aus und geben das Shell-Skript als Argument an.

Das einzige Programm, das ich mir vorstellen kann, das die Shell-Informationen des Benutzerkontos verwendet (neben dem Anmeldevorgang), ist procmail. Wirklich lustig, wenn Ihr Benutzer auf dem Mailserver als shell / bin / false festgelegt hat ... Aber Sie führen procmail normalerweise nicht als root aus.

Ein anderer Kandidat wären die Linien in der Wurzelkrone. Ich weiß nicht, wie Crond vorgeht, welche Shell verwendet werden soll.

maxschlepzig
quelle
$ SHELL wird normalerweise vom Crondaemon beim Start auf / bin / sh gesetzt.
Echox
3

Für die Bourne-Shell geschriebene Skripte werden die meiste Zeit problemlos gegen BASH, ZSH oder $ foo ausgeführt.

Auf vielen Linux-Systemen ist kein Original-sh installiert, sondern oft ein Symlink gegen / bin / bash.

Wenn einige Skripte lediglich davon ausgehen, dass die Shell explizit sh ist, sollten sie neu geschrieben werden. Über den Shebang-Mechanismus können Sie auswählen, welchen Interpreter Ihr Skript benötigt. Wenn es das sh ist, sollte das Skript #!/bin/shals erste Zeile enthalten sein.

Ihre Standard-Shell-Einstellung sollte in diesem Zusammenhang nicht relevant sein.

Echox
quelle
2

Ich glaube nicht, dass das Ändern der root-Shell Probleme bereiten würde. Ich erinnere mich an einige Unices (vielleicht einige BSD-Varianten?), Die tcsh als Standard-Shell für root haben.

Root-Logins sind sowieso selten. Normalerweise würden Sie sich in Ihr eigenes Konto einloggen und dann su oder sudo als root anmelden.

Entscheidend ist, dass die Shell von root so wenig Abhängigkeiten wie möglich aufweist, damit sie in einem Systemreparaturkontext verwendet werden kann. Zum Beispiel ist es eine gute Idee, eine statisch verknüpfte Root-Shell zu haben. Einige Distributionen enthalten eine statisch verknüpfte Version von bash oder zsh oder sash (eine Shell mit vielen integrierten Standarddienstprogrammen). Dies ist jedoch nicht so wichtig, wenn Ihr System problemlos von einer Rettungs-CD oder einem USB-Laufwerk gebootet werden kann.

Gilles 'SO - hör auf böse zu sein'
quelle
Aus Abhängigkeitsgründen ist es meines Erachtens sinnvoll, die Shell unverändert zu lassen, damit bei einer großen Systemänderung (wie einem Upgrade) keine Probleme auftreten. Ich bin damit einverstanden, dass es mit einer Live-CD oder einem USB-Stick einfach zu reparieren ist, aber ich sollte es nicht unbedingt tun müssen.
Phunehehe
1

Die Login-Shell eines Benutzers beeinflusst den Bootvorgang nicht. Sie können diese Shell nach Belieben einstellen. Nicht alle Systeme haben Bash und sie funktionieren einwandfrei. Auch wenn es /usr/bin/zshfalsch installiert wurde, sollten sich alle System-Shells in befinden /bin. Sie sollten jedoch nicht ändern /bin/sh, um auf etwas anderes als den Standard zu verweisen (es sei denn, Sie wissen, was Sie tun), da viele Skripte #!/bin/shnormalerweise auf bash #!/bin/bashverweisen arbeiten an zshoder dash.

Xenoterracid
quelle
oops sorry ich habe einen Fehler gemacht, eigentlich auf meinem Computer beide bashund zshsind in/bin
phunehehe
0

Ich habe Bash als Standard-Shell für root. Ich habe zsh für einige Zeit benutzt, bin dann aber wieder zur Bash zurückgekehrt . Welche Shell Sie verwenden, spielt keine Rolle.

Dies ist nur dann ein Problem, wenn mehr als eine Person Root-Zugriff hat. In diesem Fall können Sie einen "gemeinsamen Nenner" auswählen, der normalerweise bash ist, da dies die am häufigsten verwendete Shell ist.

Polemon
quelle
0

In Bezug auf Solaris / Illumos die Solaris - Root - Shell Mini-FAQ Erwähnung

Einige Systemadministratoren empfehlen weiterhin, die Root-Shell auf
Solaris-Systemen nicht zu ändern . Wenn Sie nach dem Grund fragen, wird Ihnen möglicherweise mitgeteilt, dass root eine
statisch verknüpfte Shell benötigt, die nicht von den dynamischen
Bibliotheken unter / usr / lib abhängig ist . Das war früher so,
muss heute aber nicht mehr so ​​sein . Solaris ist, wenn es richtig konfiguriert ist, mit jeder anderen Unix-Version vergleichbar und kann jede von Ihnen definierte Shell für root oder ein anderes Konto unterstützen.

Wenn Sie also Solaris oder illumos verwenden, ist es in Ordnung, andere Shells als zu verwenden sh.

gsl
quelle