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

OptionBeschreibung
- oder -lLogin-Shell mit vollständiger Benutzerumgebung
-c BEFEHLEinzelnen Befehl ausführen
-s SHELLAlternative Shell verwenden
-pUmgebungsvariablen 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.

Verwandte Artikel