su — Benutzer in einer laufenden Sitzung wechseln
Praxis-Guide zu su: Identität in einer laufenden Shell wechseln, Login-Shell mit su -, Befehle als anderer Nutzer ausführen und der Unterschied zu sudo.
su (substitute user) wechselt mitten in einer laufenden Sitzung die Benutzeridentität – ohne dich ab- und neu anzumelden. Ohne Argument wirst du zu root, mit su - <user> schlüpfst du komplett in die Umgebung eines anderen Kontos. Anders als sudo verlangt su das Passwort des Zielnutzers, nicht dein eigenes. Dieser Guide zeigt dir die Login-Shell, das Ausführen einzelner Befehle und warum sudo auf modernen Systemen oft die bessere, auditierbare Wahl ist.
Grundlegende Verwendung
su — Wechselt zu root. Fragt nach dem root-Passwort. Ändert weder Arbeitsverzeichnis noch Umgebung.
susu - — Wechselt zu root mit vollwertiger Login-Shell. Lädt die Umgebung von root (.profile, .bashrc). Gegenüber dem reinen 'su' empfohlen.
su -su <user> — Wechselt zu einem bestimmten Benutzer. Fragt nach dessen Passwort.
su deploysu - <user> — Wechselt zu einem bestimmten Benutzer mit vollwertiger Login-Shell. Wechselt ins Home-Verzeichnis des Ziels und lädt dessen Umgebung.
su - www-datasu -l <user> — Identisch zu 'su -
su -l postgresBefehle ausführen ohne Shell-Wechsel
su -c '<command>' <user> — Führt einen einzelnen Befehl als anderer Benutzer aus, ohne eine interaktive Shell zu öffnen.
su -c 'whoami' deploysu - -c '<command>' — Führt einen einzelnen Befehl als root mit Login-Umgebung aus.
su - -c 'systemctl restart nginx'su -s /bin/bash <user> — Wechselt zu einem Benutzer mit einer bestimmten Shell, auch wenn dessen Login-Shell eine andere ist (z. B. /sbin/nologin).
su -s /bin/bash www-datasu -s /bin/bash -c '<command>' <user> — Führt einen Befehl als Systembenutzer aus, der keine interaktive Login-Shell hat.
su -s /bin/bash -c 'php artisan queue:work' www-dataUmgebung steuern
su (ohne -) — Behält die Umgebungsvariablen des aktuellen Benutzers (PATH, HOME usw.). Nur die Benutzeridentität ändert sich.
su rootsu - (mit -) — Erzeugt eine frische Login-Umgebung für den Zielbenutzer. HOME, PATH, SHELL und USER werden auf dessen Werte gesetzt.
su - rootsu -m <user> — Identisch zu -p. Behält beim Wechsel die aktuelle Umgebung bei.
su -m deploysu -p <user> — Behält beim Wechsel die aktuelle Umgebung bei (PATH, HOME usw.).
su -p deploysu vs. sudo
su - root — Verlangt das root-Passwort. Öffnet eine vollwertige root-Login-Shell.
su - rootsudo -i — Verlangt das Passwort des aktuellen Benutzers. Öffnet eine vollwertige root-Login-Shell. Auf modernen Systemen die bevorzugte Variante.
sudo -isudo su - — Wird root über sudo, ohne das root-Passwort zu kennen. Übliches Muster, wenn der root-Login deaktiviert ist.
sudo su -sudo -u <user> -s — Öffnet eine Shell als anderer Benutzer über sudo (ohne dessen Passwort zu kennen).
sudo -u www-data -sOptionen & Flags
su --help — Zeigt die Hilfe und die verfügbaren Optionen.
su --helpsu -w VAR <user> — Erlaubt gezielt einzelne Umgebungsvariablen, die beim Wechsel erhalten bleiben (util-linux su).
su -w TERM,COLORTERM deployexit — Beendet die gewechselte Benutzersitzung und kehrt zum vorherigen Benutzer zurück.
exitCtrl+D — Sendet EOF, um die gewechselte Benutzer-Shell zu beenden. Gleichbedeutend mit 'exit'.
Ctrl+D Fazit
Der wichtigste Unterschied steckt im Bindestrich: su - startet eine echte Login-Shell und lädt die komplette Zielumgebung (HOME, PATH, SHELL), während su <user> nur die Identität tauscht und deine aktuelle Umgebung behält – das führt sonst zu überraschenden Pfad- und Konfigurationsproblemen. Für einzelne Aufgaben reicht su -c '<cmd>', und mit su -s /bin/bash kommst du auch in Systemkonten wie www-data, deren Login-Shell auf /sbin/nologin steht. Sicherheitsentscheidend ist: su verlangt das Passwort des Zielnutzers (bei root also das root-Passwort), sudo dagegen dein eigenes. Deshalb ist sudo auf modernen Systemen meist die bessere Wahl – feingranular pro Befehl autorisierbar, vollständig auditierbar, und der direkte root-Login bleibt mit einem gesperrten Passwort (!) zugunsten von sudo deaktiviert. Geh mit beiden bewusst um: Jeder Wechsel ist eine Privilegien-Eskalation.
Weiterführende Links
- Wikipedia: su (Unix) – Hintergrund zum Kommando und seiner Geschichte
- ubuntuusers-Wiki: Rootrechte – deutschsprachige Erläuterung zu su, sudo und Root-Rechten unter Ubuntu