MTE erklärt: Die Unterschiede zwischen Su, Sudo Su, Sudo-s und Sudo -i
In der Linux-Befehlszeile gibt es viele verschiedene Möglichkeiten, eine Root-Sitzung im Terminal zu erhalten. Dies kann Verwirrung stiften, da die meisten Anfänger, die nach Root suchen, nicht wissen, wie jeder Befehl root zugreifen kann, wie sie sich unterscheiden und wann diese Unterschiede wichtig sind.
Aus diesem Grund werden wir jeden der vielen verschiedenen Befehle, die verwendet werden, um Root-Zugriff in einem Terminal zu erhalten, auseinander nehmen. Wir werden genau erklären, wie sie sich etablieren, wann sie verwendet werden und alles dazwischen.
su
Der Befehl su
ersetzt den aktuellen Benutzer, der vom System in der Shell verwendet wird. Sie können zu jedem Benutzer wechseln, indem Sie su
und einen Benutzernamen hinzufügen. Dadurch wird das System angewiesen, den aktuellen Benutzer zu dem angegebenen Benutzer zu wechseln (und sich im Wesentlichen abzumelden). Alternativ kann der Befehl su
Root-Zugriff erhalten, indem er su
ohne etwas nach dem Befehl anzugeben.
"Su" wird am besten verwendet, wenn ein Benutzer direkten Zugriff auf das root-Konto des Systems wünscht. Es geht nicht durch sudo
oder ähnliches. Stattdessen muss das Passwort des Root-Benutzers bekannt sein und verwendet werden, um sich anzumelden. Darüber hinaus haben andere Möglichkeiten, Root zu erlangen, nicht den Vorteil, Zugriff auf das Root-Home-Verzeichnis und die Root-Umgebung zu erhalten.
Sudo su
Dieser Befehl entspricht im Wesentlichen der Ausführung von su
in der Shell. Anstatt dem System mitzuteilen, dass es die Benutzer direkt wechseln soll, sagen Sie ihm, dass es den Befehl "su" als root ausführen soll. Wenn sudo su
wird, werden ".profile", ".bashrc" und "/ etc / profile" gestartet, ähnlich wie su
(oder su root
) ausgeführt wird. Dies liegt daran, dass, wenn ein Befehl mit sudo
davor ausgeführt wird, es sich um einen Befehl handelt, dem root-Berechtigungen erteilt wurden.
Obwohl es keinen großen Unterschied zu "su" gibt, ist sudo su
immer noch ein sehr nützlicher Befehl aus einem wichtigen Grund: Wenn ein Benutzer "su" ausführt, um auf einem System root-Zugriff zu erhalten, muss er das root-Passwort kennen. Die Art, wie root mit sudo su
wird, besteht darin, das Passwort des aktuellen Benutzers anzufordern. Dies macht es möglich, root ohne das Root-Passwort zu bekommen, was die Sicherheit erhöht.
sudo -i
Die Verwendung von sudo -i
ist praktisch identisch mit dem Befehl sudo su
. Benutzer können root mit "sudo" erreichen und nicht mit dem root-Benutzer. Ähnlich wie sudo su
erlaubt der -i
Flag einem Benutzer, eine root-Umgebung zu erhalten, ohne das Passwort des root-Accounts zu kennen. sudo -i
ist auch sehr ähnlich wie sudo su
, da es alle Umgebungsdateien (.profile usw.) liest und damit die Umgebung in der Shell einstellt.
Wo es von "sudo su" abweicht, ist, dass sudo -i
eine viel sauberere Methode ist, root und eine root-Umgebung zu gewinnen, ohne direkt mit dem root-Benutzer zu interagieren. Wie? Mit sudo su
Sie mehr als einen root setuid
Befehl. Diese Tatsache macht es viel schwieriger herauszufinden, welche Umgebungsvariablen beibehalten werden und welche geändert werden (wenn man in die Root-Umgebung übergeht). Dies ist mit sudo -i
nicht der Fall, und deshalb betrachten es die meisten Leute als die bevorzugte Methode, Root zu erreichen, ohne sich direkt anzumelden.
sudo -s
Die -s
für den Befehl "sudo" liest die $ SHELL-Variable des aktuellen Benutzers, der Befehle ausführt. Dieser Befehl funktioniert so, als würde der Benutzer sudo /bin/bash
. Sudo -s
ist eine "Nicht-Login" -Stil-Shell. Dies bedeutet, dass das System im Gegensatz zu einem Befehl wie sudo -i
oder sudo su
keine Umgebungsdateien lesen kann. Das bedeutet, wenn ein Benutzer die Shell sudo -s
, sudo -s
auszuführen, erhält er Root, ändert aber nicht den Benutzer oder die Benutzerumgebung. Dein Zuhause ist nicht das Stammhaus, etc.
Dieser Befehl wird am besten verwendet, wenn der Benutzer root überhaupt nicht berühren möchte und nur eine root-Shell für die einfache Ausführung von Befehlen wünscht. Andere Befehle, über die oben gesprochen wurde, erhalten Root-Zugriff, berühren jedoch Root-Umgebungsdateien und ermöglichen Benutzern einen umfassenderen Zugriff auf root (was ein Sicherheitsproblem darstellen kann).
Fazit: Welchen Befehl soll ich verwenden?
Jeder Befehl hat seinen Anwendungsfall. Wichtig ist hier zu verstehen, was jeder Befehl macht und wann er sie verwenden soll. So wie es aussieht, ist sudo -i
der praktischste und sauberste Weg, um eine Root-Umgebung zu erhalten. Auf der anderen Seite werden diejenigen, die sudo -s
, feststellen, dass sie eine Root-Shell erhalten können, ohne die Root-Umgebung zu berühren, was zusätzliche Sicherheitsvorteile mit sich gebracht hat.
Es gibt wirklich keinen Befehl auf dieser Liste, der 100% der Beste ist. Wenn die Benutzer mit der Befehlszeile vertrauter werden, müssen sie jeden Weg (und es gibt viele) nutzen, um die Vor- und Nachteile abzuwägen und entsprechend zu handeln. Ich hoffe, dass mit Hilfe dieses Artikels diese Entscheidungen leichter zu treffen sind.
Auf welche Weise bevorzugen Sie Root-Zugriff in Linux? Sag uns unten!
Bildnachweis: blog.david-jensen.com