Die Unterschiede zwischen Su, Sudo Su, Sudo -s und Sudo -i 1

Die Unterschiede zwischen Su, Sudo Su, Sudo -s und Sudo -i

Es gibt viele verschiedene Möglichkeiten, eine Root-Sitzung im Linux-Terminal zu erhalten. Dies kann zu einiger Verwirrung führen, da die meisten Anfänger, die Root-Rechte erlangen möchten, möglicherweise nicht damit vertraut sind, wie die einzelnen Befehle Root-Zugriff erhalten können, wie sie sich unterscheiden und wann diese Unterschiede eine Rolle spielen. Hier nehmen wir jeden der vielen verschiedenen Befehle auseinander, die verwendet werden, um Root-Zugriff in einem Terminal zu erhalten, erklären, wie sie Root erhalten, wann sie verwendet werden und alles dazwischen.

so

Das su Der Befehl ersetzt root durch den aktuellen Benutzer in der aktuellen Shell.

Sie können zu jedem Benutzer wechseln, indem Sie tippen su und hinterher einen Benutzernamen hinzufügen.

Linuxsudo Switchuser

Dadurch wird das System angewiesen, den aktuellen Benutzer auf den angegebenen umzuschalten (und sich im Wesentlichen abzumelden). Alternativ die su Der Befehl kann durch Eingabe Root-Zugriff erhalten su ohne etwas nach dem Befehl anzugeben.

su wird am besten verwendet, wenn ein Benutzer direkten Zugriff auf das Root-Konto auf dem System haben möchte. Es geht nicht durch sudo oder so ähnlich. Stattdessen werden Sie aufgefordert, das Passwort des Root-Benutzers einzugeben, da Sie sich buchstäblich darin anmelden. Darüber hinaus haben andere Möglichkeiten, Root-Zugriff zu erlangen, nicht den Vorteil, auch Zugriff auf das Root-Home-Verzeichnis und die Root-Umgebung zu erhalten.

Warnung: verwenden su ist die unsicherste Art, eine Root-Aktion auszuführen. Verwenden Sie dies im Allgemeinen nicht, wenn Sie es vermeiden können.

su-c

Dieser Befehl übergibt andere Befehle direkt an den Root-Benutzer.

Linuxsudo Suc

Ähnlich wie beim Tippen sudo vor einem Befehl, su -c führt einen Befehl als Root-Benutzer aus. Anstatt den Befehl einfach einzutippen, müssen Sie ihn jedoch in Anführungszeichen setzen.

Dies ist eine schnelle Möglichkeit, einen Befehl mit erhöhten Rechten durch Ihr Terminal zu schießen. Es ist sehr nützlich, wenn sudo ist irgendwie nicht verfügbar (es ist in Distributionen wie Arch Linux nicht vorinstalliert) oder funktioniert nicht richtig, weil es beschädigt ist.

Da Sie etwas direkt an root übergeben, müssen Sie Ihr root-Passwort eingeben, wenn sich Ihr Benutzer- und Ihr root-Passwort unterscheiden, um sich zu authentifizieren.

sudo su

Dieser Befehl fragt nach dem Passwort des aktuellen Benutzers und nicht nach root.

Linuxsudo Sudosu

Es ist im Wesentlichen dasselbe wie nur Laufen su in der Shell, abgesehen von einem entscheidenden Unterschied: Anstatt dem System direkt zu sagen, dass es den Benutzer wechseln soll, sagen Sie ihm, dass es die ausführen soll su Befehl mit Superuser-Rechten. Wann sudo su ausgeführt wird, werden „.profile“, „.bashrc“ und „/etc/profile“ gestartet, ähnlich wie beim Ausführen su (oder su root). Wenn irgendein Befehl mit ausgeführt wird sudo Davor erhält es Root-Rechte.

Obwohl es keine großen Unterschiede zwischen gibt sudo su und suersterer ist aus einem wichtigen Grund immer noch ein sehr nützlicher Befehl: wenn ein Benutzer läuft su Um Root-Zugriff auf ein System zu erhalten, müssen sie das Root-Passwort kennen. Root wird mit angegeben sudo su indem Sie das Passwort des aktuellen Benutzers anfordern, was es ermöglicht, ohne das Root-Passwort root zu werden.

Dies ist in Situationen nützlich, in denen Sie möglicherweise das Root-Passwort vergessen haben, wenn es sich von dem Passwort für Ihr Benutzerkonto unterscheidet. Während Sie dies in der Zwischenzeit tun könnten, sollten Sie das Root-Passwort dennoch irgendwann zurücksetzen.

sudo -i

Verwenden sudo -i ist praktisch das gleiche wie die sudo su Befehl mit einer Ausnahme: Er interagiert nicht direkt mit dem Root-Benutzer.

Linuxsudo Sudoi

Ähnlich wie sudo sudas -i Flag ermöglicht es einem Benutzer, eine Root-Umgebung zu erhalten, ohne das Passwort des Root-Kontos kennen zu müssen. sudo -i ist auch sehr ähnlich zu verwenden sudo su: Es liest alle Umgebungsdateien („.profile“ usw.) und legt die Umgebung in der Shell fest.

Wo es sich unterscheidet sudo su ist das sudo -i ist eine viel sauberere Art, Root und eine Root-Umgebung zu erlangen, ohne direkt mit dem Root-Benutzer zu interagieren.

Zur Verdeutlichung: mit sudo suverwenden Sie mehr als einen Stamm setuid Befehl im Hintergrund. Dies macht es viel schwieriger herauszufinden, welche Umgebungsvariablen beibehalten und welche geändert werden (beim Wechseln zur Root-Umgebung). Das stimmt nicht mit sudo -i. Aus diesem Grund sehen die meisten Leute es als die bevorzugte Methode an, um ohne direkte Anmeldung root zu werden.

In einfacher Sprache: sudo -i gibt Ihnen eine „saubere“ Root-Anmeldung in Ihrem „/root“-Ordner, der der „Home“-Ordner für den Root-Benutzer ist.

sudo -s

Dieser Befehl ruft eine Shell mit Ihrer $SHELL-Variablen auf.

Linuxsudo-Sudos

Das -s Schalter für die sudo Der Befehl liest die $SHELL-Variable des aktuellen Benutzers, der Befehle ausführt. Dieser Befehl funktioniert so, als würde der Benutzer ausgeführt sudo /bin/bashwenn die Shell, aus der der Benutzer kommt, bash ist.

In unserem Fall, sudo -s gab uns die interaktive Fisch-Shell, da wir zuvor Fisch als unsere Standard-Shell installiert hatten, also wäre es so, als würden wir rennen sudo /usr/bin/fish.

Linuxsudo-Shellswitch

Sudo -s ist eine Shell im „Non-Login“-Stil. Im Gegensatz zu einem Befehl wie sudo -i oder sudo su, liest das System keine Umgebungsdateien. Wenn ein Benutzer der Shell sagt, dass sie ausgeführt werden soll sudo -s, wird es root, ändert aber nicht die Benutzerumgebung. Ihr Zuhause wird nicht das Stammhaus usw. sein.

Linuxsudo-Befehle

Dieser Befehl wird am besten verwendet, wenn der Benutzer zu root wechseln, aber dieselbe Shell-Umgebung beibehalten möchte. Beispielsweise möchten Sie vielleicht ein Fish-Skript ausführen und nicht dazu gezwungen werden Standard-Bash-Shell diese Wurzel kommt oft in den meisten Distributionen vor.

Andere oben behandelte Befehle erhalten Root-Zugriff, geben Ihnen aber auch die Shell- und Umgebungsvariablen, die die Distribution für Root hat. Vielleicht möchten Sie einfach ohne all das Gepäck zum Benutzer wechseln!

Häufig gestellte Fragen

Warum sollte die Hülle, mit der ich laufe, von Bedeutung sein?

Wenn Sie für Ihr Benutzerkonto eine unveränderte Bash-Shell verwenden, ist der Unterschied hauptsächlich philosophischer Natur. In den meisten Fällen führt das Erhöhen auf Root durch eine der Shells zu keiner merklichen Änderung. Aber wenn Sie etwas anderes ausführen, werden Sie sofort feststellen, wie unterschiedlich die Dinge sein können!

Angenommen, Sie führen die Fish-Shell für Ihr Benutzerkonto aus und behalten die Root-Shell in Bash. Laden der Benutzer-Shell mit sudo -s kommt zu einem ganz anderen Ergebnis.

Die Shell folgt der Konfiguration, die Sie im Home-Ordner von root haben. Wenn Sie so etwas nicht haben, wird es nur die Standardkonfiguration statt Ihrer persönlichen laden. (In unserem Fall wäre das „~/.config/fish/config.fish“.) Eigentlich ist es am besten, die Dinge so zu belassen, anstatt die Benutzerkonfiguration nach „/root“ zu kopieren.

Der Wechsel zur Shell Ihres Benutzerkontos beim Wechsel zu root sollte nur erfolgen, wenn Sie ein Skript ausführen müssen, das diese bestimmte Shell unbedingt benötigt.

Kann der Root-Zugriff meinem System schaden?

In manchen Fällen ja. Wenn Sie nicht absolut sicher sind, dass Sie für alles in einer bestimmten Terminalsitzung auf root zugreifen müssen, ist es oft besser, einfach zu tippen sudo gefolgt von einem Befehl, wenn Sie für diesen bestimmten Befehl auf root zugreifen möchten. Zum Beispiel tippen sudo apt install vlc in jeder Debian-basierten Version von Linux würde das Betriebssystem anweisen, auf root zuzugreifen, nur um den APT-Paketmanager auszuführen, um VLC zu installieren.

Eine sehr wichtige Einschränkung beim Laufen sudo -i oder jede andere Variante, die wir zuvor besprochen haben, im Gegensatz zur Eingabe sudo vor jedem Befehl, den Sie als root ausführen möchten, ist, dass ersterer Ihren Befehlsverlauf nicht in „/var/log/auth.log“ protokolliert. Wenn Sie Fehler machen, können Sie nicht zurückgehen und überprüfen, was Sie getan haben, damit Sie es korrigieren können. Sie müssen nicht genügend Arbeitsspeicher haben, da Root-Sitzungen nicht aufgezeichnet werden.

Welche Variante von „sudo su“ führe ich aus, wenn ich „sudo“ vor einem Befehl eingebe?

Durch Eingabe von sudo Um einen Befehl auszuführen (dh Sie geben ihn in dieselbe Zeile wie den Befehl ein, den Sie ausführen möchten), führen Sie ihn im Wesentlichen unter einer interaktiven Root-Shell aus. Das wäre, was die sudo -s Standalone-Befehl tut. Es ist auch sehr ähnlich zum Ausführen des su -c Befehl.

Unterstützen Sie unsere Arbeit ❤️

Wenn Ihnen dieser Artikel gefallen hat, können Sie uns mit einem Trinkgeld unterstützen, damit wir weiterhin großartige Inhalte veröffentlichen können.

Sichere Zahlung mit PayPal
Moyens I/O-Personal. motivierte Sie und gab Ratschläge zu Technologie, persönlicher Entwicklung, Lebensstil und Strategien, die Ihnen helfen werden.