Was ist der Unterschied zwischen 'su -', 'sudo bash' und 'sudo sh'?

29

Ich würde gerne wissen, worin der Unterschied besteht

  • su -
  • sudo bash
  • sudo sh

Ich kann mich währenddessen nicht als root anmelden, su -da ich kein root-Passwort habe. Ich meine, ich habe mein Benutzerpasswort, mit dem ich kann, sudo "command" aber dieses Passwort funktioniert nicht. su - Ich kann mich als root sudo bashmit meinem Benutzerpasswort anmelden und mich währenddessen anmelden Dabei sudo shbekomme ich aber dann eine Eingabeaufforderung in dieser Form #

Patryk
quelle

Antworten:

27

Hintergrund

Unter Linux (und allgemein unter Unix) gibt es einen SuperUser namens Root . Der SuperUser kann alles und jeden erledigen und somit die tägliche Arbeit, da der SuperUser gefährlich sein kann. Sie können einen Befehl falsch eingeben und das System zerstören. Im Idealfall werden Sie als Benutzer ausgeführt, der nur die für die jeweilige Aufgabe erforderlichen Berechtigungen besitzt. In einigen Fällen muss es sich um Root handeln, meistens handelt es sich jedoch um einen regulären Benutzer.

su -

Dieser Befehl wird verwendet, um sich am Root-Konto anzumelden.
Standardmäßig ist das Passwort des Root-Kontos in Ubuntu gesperrt. Dies bedeutet, dass Sie sich nicht direkt als Root anmelden oder den Befehl su verwenden können, um Root-Benutzer zu werden. Da das Root-Konto jedoch physisch vorhanden ist, können weiterhin Programme mit Root-Berechtigungen ausgeführt werden. Hier kommt sudo ins Spiel - es ermöglicht autorisierten Benutzern (normalerweise "Administratoren"), bestimmte Programme als Root auszuführen, ohne das Root-Passwort zu kennen.

Siehe So aktivieren Sie das Root-Konto .

sudo sh

Dieser Befehl führt "sh" als Superuser aus.
Das Dienstprogramm sh ist ein Befehlsspracheninterpreter, der Befehle ausführen soll, die aus einer Befehlszeilenzeichenfolge, der Standardeingabe oder einer angegebenen Datei gelesen werden.

sudo bash

Dieser Befehl führt "bash" als Superuser aus.
Bash ist die Shell oder der Befehlsspracheninterpreter. Bash ist eine sh-kompatible Shell, die nützliche Funktionen der Korn-Shell (ksh) und C-Shell (csh) enthält. Es soll dem Standard IEEE POSIX P1003.2 / ISO 9945.2 Shell and Tools entsprechen. Es bietet Funktionsverbesserungen gegenüber sh sowohl für die Programmierung als auch für die interaktive Verwendung. Darüber hinaus können die meisten sh-Skripte von Bash ohne Änderungen ausgeführt werden.

Referenzen: 1 , 2 , 3 .

desgua
quelle
7
Beachten Sie, dass Sie sich als Superuser anmelden können, indem Sie sudo su -ohne root-Passwort arbeiten. Da sudo den su -Befehl mit root-Berechtigungen ausführt , werden Sie nur zur Eingabe des Benutzerpassworts aufgefordert. Dies hat den Vorteil, dass die Umgebung des Root-Benutzers eingerichtet wird, was möglicherweise nicht durch einfaches Ausführen einer Shell mit sudo erfolgt.
Aaron D
6

su -:

Dies ändert Ihre Benutzerkennung und erbt die Umgebungsvariablen, als ob Sie sich mit diesem Benutzer angemeldet hätten. Normalerweise würden Sie das Format verwenden, su - <userid>um sich als Benutzer anzumelden. Wenn Sie die "Benutzer-ID" löschen, wird davon ausgegangen, dass Sie versuchen, sich als root anzumelden. Dies ist nicht möglich (es sei denn, Sie ändern das root-Passwort).

sudo bash& sudo sh:

Alles, was nach dem sudo ausgeführt werden soll, ist ein Programm. In diesen Fällen müssen Sie ein paar Shells ausführen - bash bzw. dash. Verwenden Sie man bashund man shfür weitere Details zu den verschiedenen Shells.


Verwandte Fragen:

fossfreedom
quelle
Ok, danke für die Antwort, aber wie lautet das Standardkennwort für root? Wo kann ich es finden ?
Patryk
@lordmonkey root hat kein Passwort und benötigt auch kein Passwort. sudo -igibt Ihnen eine Login-Shell wie su -würde, außer sudo fragt nach Ihrem Passwort, nicht root.
Geirha