## Wie man den Benutzer wechselt oder vorübergehend root wird
Ankündigung
Alle meine letzten Beiträge finden Sie auf Medium.
## In diesem Artikel behandelte Befehle
id # Zeigt den Benutzernamen des aktuell angemeldeten Benutzers an. Außerdem wird angezeigt, zu welchen Gruppen der Benutzer gehört.
su # Ermöglicht es Ihnen, zu einem anderen (u)ser zu wechseln, während Sie als jemand anderes angemeldet sind.
sudo # xxxxxxxxxxxxxxxxx
## Werden Sie zum Root-Benutzer mit „su“
In Linux wird immer empfohlen, dass Sie es vermeiden, sich direkt als Root-Benutzer anzumelden. Das liegt daran, dass es zu Sicherheitsproblemen führen kann und die Wahrscheinlichkeit erhöht, etwas zu beschädigen. Tatsächlich zeigt Centos eine Warnmeldung an, wenn Sie versuchen, sich direkt als root anzumelden.
Die beste Praxis ist also, dass Sie sich immer als normaler Benutzer anmelden. Es gibt jedoch viele Befehle, die nur als Root-Benutzer ausgeführt werden können, und in diesen Fällen wird empfohlen, das Dienstprogramm (s)witch (u)ser zu verwenden, mit dem Sie von einem Benutzer zum anderen wechseln können:
su – root # Damit können Sie zum Root-Benutzer wechseln. Auf das Argument „-“ gehe ich später ein.
Passwort # Der Befehl su fragt nach dem Passwort des Benutzers, zu dem Sie wechseln wollen. In diesem Fall ist es das Passwort des Root-Benutzers.
id # Der Befehl id zeigt einfach an, unter welchem Benutzer Ihre Sitzung gerade läuft.
Hinweis: Sie können den Befehl su nur verwenden, wenn Sie das Passwort des Benutzers kennen, zu dem Sie wechseln. Die einzige Ausnahme von dieser Regel ist, wenn Sie als Root-Benutzer angemeldet sind. In diesem Fall können Sie mit su zu einem beliebigen Benutzer wechseln, ohne dass eine Passwortabfrage erfolgt.
login:
passwort:
id
su – # Wenn Sie den Benutzernamen weglassen, wie hier, dann nimmt su standardmäßig an, dass Sie Root meinen.
Passwort
id
su – Tom
id # Beachten Sie, dass wir Toms Passwort nicht eingeben mussten.
## Zurück zum vorherigen Benutzer wechseln
Im obigen Beispiel wechselten wir von John-=>root-=>Tom. Dies bedeutete, dass unsere aktuelle Shell 2-Sessions-tief ist. Wenn Sie also zurück zu John wechseln wollen, dann können Sie den Befehl exit verwenden:
id
exit # Das bringt Sie einen Schritt zurück, was in diesem Fall der Root-Benutzer ist.
id
exit # Jetzt sind Sie wieder beim John, und Sie können nicht weiter aussteigen. Wenn Sie versuchen, wieder auszusteigen, wird das Terminal selbst geschlossen.
Anstatt obiges zu tun, hätten Sie auch einfach tun können:
su – John # In diesem Fall wären Sie 3-Sessions tief, d. h.d. h. John-=>root-=>Tom-=>John
# Es ist gute Praxis, wenn möglich, nie tiefer als 3 Ebenen zu gehen. Andernfalls kann es zu seltsamen Verhaltensweisen kommen.
## Was bedeutet das „-“ in ’su -‚?
Der erste Parameter, „-„, sagt su, dass es so tun soll, als ob der Benutzer sich direkt angemeldet hätte. Ansonsten wird die Umgebung weitergegeben, mit Ausnahme von $PATH, das durch PATH und SUPATH in /etc/default/su gesteuert wird.
Dieses „-“ bedeutet im Grunde, dass die neue Sitzung von vorne beginnt und keinen „Ballast“ aus der vorherigen Sitzung mitnimmt. Wenn Sie z. B. eine Variable erstellen und exportieren, ist diese Variable nur verfügbar, wenn Sie keine neue Sitzung starten:
testvar=12345 # Hier habe ich eine neue Variable erstellt.
export testvar # Damit wird die Variable so eingestellt, dass sie in allen Sitzungen verfügbar ist.
su Tom # Da „-“ weggelassen wird, ist ein Übertrag erlaubt. Die Variable sollte also in der neuen Sitzung verfügbar sein.
password
echo testvar # Die Variable ist in der neuen Sitzung vorhanden.
exit
su – Tom # Da „-“ angegeben ist, wird jeglicher Übertrag blockiert, um eine möglichst direkte Anmeldung zu imitieren.
echo testvar # Gibt ein Leerzeichen zurück, da diese Variable in einer „frischen“ Sitzung nicht existiert.
## Führen Sie einen einzelnen Befehl als anderen Benutzer aus.
Sie können su verwenden, um den Benutzer gerade lange genug zu wechseln, um einen einzelnen Befehl auszuführen, bevor Sie sich wieder zurückziehen:
su – Tom -c ‚echo „Hello and Goodbye Tom‘
Oder Sie können mehrere Befehle in einer einzigen Zeile mit Semikolon zusammenfassen:
su – Tom -c ‚id ; echo „Hallo und auf Wiedersehen Tom‘
## Geben Sie Nicht-Administratoren mit sudo
In Linux können alle Befehle/Aufgaben der Admin-Ebene nur vom Benutzer root ausgeführt werden. Wenn es also eine bestimmte Aktivität auf Admin-Ebene gibt, die ein Kollege ausführen soll, dann ist eine Möglichkeit, dies zu tun, ihm das Root-Passwort mitzuteilen. Dies ist jedoch keine gute Idee, denn:
1. aus Sicherheitsgründen ist es am besten, den Kreis derjenigen, die Root-Zugriff haben, so weit wie möglich einzuschränken.
2. Sie geben ihm damit ungewollt die volle Kontrolle über alles andere.
Ein Weg aus diesem Dilemma ist die Verwendung des Dienstprogramms sudo. Mit sudo können Sie einem Benutzer die Möglichkeit geben, einen oder mehrere Befehle auf Admin-Ebene auszuführen (als ob er als Root-Benutzer angemeldet wäre, aber ohne sich tatsächlich als Root-Benutzer anzumelden).
Zum Beispiel kann nur Root den Rechner herunterfahren:
shutdown # Damit wird ein Rechner heruntergefahren. Um ihn wieder einzuschalten, müssen Sie den Power-Knopf an der Maschine drücken.
Wenn der Benutzer Tom versucht, den Shutdown-Befehl zu verwenden, bekommt er eine „permission denied“-Meldung:
<code=>
Wenn der Root-Benutzer Tom die Berechtigung sudo gibt, den „shutdown“-Befehl zu verwenden. Dann sollte Tom nun in der Lage sein, den Befehl auf Admin-Ebene auszuführen, indem er ihm das Wort sudo voranstellt:
sudo {Befehl}
Wie oben angedeutet, besteht die Syntax zum Auslösen von sudo aus dem Wort sudo, gefolgt von dem auszuführenden Befehl:
Damit kann Tom sein sudo-Recht wie folgt aufrufen:
shutdown # this wont work because sudo has not been invoked.
sudo shutdown # Das hat funktioniert, und die Maschine fährt herunter.
<password=> # Wie bei su müssen Sie ein Passwort eingeben. Aber im Gegensatz zu su geben Sie tatsächlich das Passwort des aktuellen Benutzers ein.
# Das ist ein wenig übertrieben, da der Benutzer bereits als dieser Benutzer angemeldet ist. Glücklicherweise kann diese <l-anchor=>sudo-Passwort<l=>-Aufforderung deaktiviert werden.
Aus Sicherheitsgründen wird ein Protokoll über alle sudo-Aktivitäten geführt, falls ein Benutzer seine sudo-Rechte missbraucht.
Der Root-Benutzer muss <l=>konfigurieren und sudo-Privilegien zuweisen<l=>, um Privilegien zu vergeben.
## Der Hauptunterschied zwischen der Verwendung von su und sudo (zum Ausführen von Admin-Befehlen)
Zusammenfassend lässt sich sagen, dass der Hauptunterschied zum Ausführen von Befehlen auf Admin-Ebene als Hauptbenutzer folgende sind:
1. Um su zu verwenden, müssen Sie das Root-Passwort kennen, während das bei sudo nicht der Fall ist
2. Bei sudo müssen Sie jedem Befehl das Wort „sudo“ voranstellen, aber bei su ist keine Voranstellung notwendig.
3. Mit su können Sie jeden Admin-Befehl ausführen, aber mit sudo können Sie nur die Admin-Befehle ausführen, die in der Konfigurationsdatei von sudo autorisiert sind.
##Ein paar nützliche Fakten
Der Root-Benutzer wird manchmal als „Superuser“ bezeichnet.
Eine Alternative zu „id“ ist „whoami“ (ist aber nicht so aussagekräftig).
Es gibt eine Konvention, dass für einen Root-Benutzer die Benutzereingabe auf „#“ endet, während sie für alle anderen mit „$“ endet. Apropos, es gibt ein paar Möglichkeiten, <l=>die Eingabeaufforderung anzupassen<l=>.
Der id-Befehl zeigt nicht nur Benutzernamen und Gruppennamen. Er zeigt auch die entsprechenden id-Nummern für die Benutzer und Gruppen an. Sie können den id-Befehl auch verwenden, um Details zu anderen Benutzern neben dem aktuell angemeldeten Benutzer anzuzeigen:
id {Benutzername}
Der id-Befehl bezieht seine Informationen aus /etc/passwd und /etc/group
## Verwandte Themen
Einrichten und Zuweisen von sudo-Rechten.