Da Ubuntu das Root-Konto standardmäßig deaktiviert, warum nicht auch den Root-Shell-Zugriff deaktivieren?

12

Die aktuellen Standardeinstellungen für das Root-Konto in /etc/passwdsind root:x:0:0:root:/root:/bin/bash.

Warum nicht auf einstellen root:x:0:0:root:/root:/usr/sbin/nologin?

loongyh
quelle
7
Damit du es tun kannst sudo -i?
AlexP
12
"Deaktiviert das Root-Konto" ist eine lose Beschreibung: Was es wirklich deaktiviert, ist die kennwortbasierte Authentifizierung des Root-Kontos
steeldriver
1
@AlexP in der Tat habe ich es gerade getestet, sudo -i funktioniert nicht mit root auf / usr / sbin / nologin.
Loongyh

Antworten:

19

Wenn dies der Fall wäre, könnten Sie nur Befehle gleichzeitig ausführen sudo, aber Sie könnten keine Root-Shell starten. Eine Root-Shell ist in vielen Fällen praktisch, z. B. wenn Sie mehrere Befehle hintereinander als Root ausführen möchten.

Konkret konnte man nicht laufen sudo -i, wie AlexP feststellte. Von man sudo:

-i, --login    Run the shell specified by the target user's password database entry as a login shell.
Alberto Santini
quelle
7
Funktioniert das nicht sudo /bin/bash?
Federico Poloni
5
@ FedericoPoloni das wäre eher wie sudo -sich denke (eine root-shell, aber keine root- login- shell). Es ist jedoch ein guter Punkt - und sudo -sscheint sogar zu funktionieren, wenn /usr/sbin/nologin
Roots
1
Sie können deaktivieren -i, -s, /bin/bash, und so weiter durch nur eine weiße Liste von Befehlen ermöglicht, finden Sie in der Dokumentation für die sudoers - Datei. Dies ist so feinkörnig, dass Benutzer beispielsweise /etc/init.d/someservice restartals Root ausgeführt werden können, ohne dass sie ausgeführt werden müssen /etc/init.d/someservice stop. Die Ubuntu-Standardeinstellung ist jedoch, kein Kennwort für zu setzen rootund Administratoren zu erlauben, alles mit sudo zu tun. Wahrscheinlich ist die Begründung a) mehr als ein Administrator-Benutzer und b) der Administrator-Benutzer muss sich kein zweites Passwort für das Root-Konto merken.
Allo
8

Neben Alberto Santinis Sudo-Antwort gibt es noch eine (weitaus bessere) Antwort. Wenn die root-Shell auf etwas eingestellt ist, das keine Shell ist, funktioniert das Booten eines einzelnen Benutzers nicht. Es gibt eine Wiederherstellung suloginfür Dinge wie nicht vorhandene oder vollständig beschädigte Shell, aber es wird nicht funktionieren, wenn die Shell eine gültige Shell zu sein scheint, aber eigentlich keine Shell ist.

Sie können immer noch sudodirekt eine Shell erhalten, indem Sie die Shell angeben, sudosodass sie nicht einmal einen guten Schutz bietet .

Joshua
quelle