Der Befehl su (substitute user) wechselt die Benutzeridentität in der aktuellen Shell-Sitzung. Ohne Angabe eines Benutzernamens wechselt su standardmäßig zum Root-Benutzer.
Syntax des su-Befehls
Die allgemeine Syntax lautet:
su [OPTIONEN] [BENUTZER [ARGUMENT...]]
OPTIONEN- Flags zur Steuerung des Verhaltens.BENUTZER- Der Zielbenutzer. Ohne Angabe wird Root verwendet.ARGUMENT- Optionale Argumente, die an die Shell übergeben werden.
Grundlegende Verwendung
Ohne Optionen startet su eine interaktive Shell als Root:
su
Nach Eingabe des Root-Passworts wechselt die Shell zur Root-Identität. Die Umgebungsvariablen SHELL und HOME werden aus /etc/passwd des Zielbenutzers übernommen, das aktuelle Verzeichnis bleibt jedoch unverändert.
Prüfe den aktiven Benutzer mit whoami:
whoami
Die Ausgabe zeigt den aktuellen Benutzernamen:
root
Login-Shell starten
Die Option - (alternativ -l oder --login) startet eine vollständige Login-Shell. Dabei werden alle Umgebungsvariablen neu gesetzt und das Arbeitsverzeichnis zum Home-Verzeichnis des Zielbenutzers gewechselt:
su -
Der Unterschied ist wichtig: Ohne - bleiben PATH und andere Umgebungsvariablen des ursprünglichen Benutzers erhalten. Mit - erhältst du die komplette Umgebung des Zielbenutzers.
Zu einem anderen Benutzer wechseln
Um zu einem bestimmten Benutzer zu wechseln, übergib den Benutzernamen als Argument:
su maria
Für eine Login-Shell als dieser Benutzer:
su - maria
Einen einzelnen Befehl ausführen
Mit der Option -c (--command) führst du einen Befehl aus, ohne eine interaktive Shell zu starten:
su -c "ps aux"
Der Befehl wird als Root ausgeführt, danach kehrt die Shell sofort zurück. Bei Befehlen mit Leerzeichen sind Anführungszeichen erforderlich.
Alternative Shell verwenden
Die Option -s (--shell) startet eine andere Shell als die in /etc/passwd definierte:
su -s /usr/bin/zsh
Das ist nützlich, wenn du temporär eine andere Shell testen möchtest.
Umgebungsvariablen beibehalten
Mit -p (--preserve-environment) bleiben die Umgebungsvariablen des aufrufenden Benutzers erhalten:
su -p
Diese Option wird ignoriert, wenn gleichzeitig - verwendet wird.
Wichtige Optionen im Überblick
| Option | Beschreibung |
|---|---|
- oder -l | Login-Shell mit vollständiger Benutzerumgebung |
-c BEFEHL | Einzelnen Befehl ausführen |
-s SHELL | Alternative Shell verwenden |
-p | Umgebungsvariablen beibehalten |
su vs. sudo
Auf Distributionen wie Ubuntu ist das Root-Konto standardmäßig deaktiviert. In diesem Fall funktioniert su ohne Passwort nicht. Die Alternative: Kombiniere sudo mit su:
sudo su -
Dieser Befehl startet eine Root-Shell nach Eingabe deines eigenen Passworts (nicht des Root-Passworts).
Eine weitere Möglichkeit bietet sudo -i:
sudo -i
Das Ergebnis entspricht su -: eine interaktive Login-Shell als Root.
Vorteile von sudo gegenüber su:
- Kein gemeinsames Root-Passwort nötig
- Feinere Rechtekontrolle möglich
- Aktionen werden protokolliert
Zusammenfassung
Der Befehl su wechselt die Benutzeridentität in der aktuellen Shell-Sitzung. Mit der Option - erhältst du eine vollständige Login-Umgebung des Zielbenutzers. Auf Systemen ohne Root-Passwort ist sudo su - oder sudo -i die Alternative.