SU(1) Dienstprogramme fur Benutzer SU(1) BEZEICHNUNG su - einen Befehl unter anderer Benutzer- und Gruppenkennung ausfuhren UBERSICHT su [Optionen] [-] [Benutzer|UID [Argument ]] BESCHREIBUNG su ermoglicht es, Befehle unter anderer Benutzer- und Gruppenkennung auszufuhren. Wenn beim Aufruf kein Benutzer angegeben wird, offnet su standardmassig eine interaktive Shell als_root_. Wenn ein Benutzer angegeben wird, konnen zusatzliche Argumente ubergeben werden, wobei diese an die Shell weitergeleitet werden. Aus Grunden der Abwartskompatibilitat wechselt su standardmassig nicht das aktuelle Verzeichnis und setzt lediglich die Umgebungsvariablen HOME und SHELL (plus USER und LOGNAME, falls der Ziel-Benutzer nicht Root ist). Es wird empfohlen, stets die Option --login (statt deren Kurzform - zu verwenden, um durch Mischen der Umgebungen verursachte Nebenwirkungen zu vermeiden. Diese Version von su verwendet PAM zur Authentifizierung sowie fur die Benutzerkonten- und Sitzungsverwaltung. Einige der in anderen su-Implementierungen verfugbaren Konfigurationsoptionen, wie die Unterstutzung fur eine Gruppe >>wheel<<, mussen uber PAM konfiguriert werden. su zielt vorrangig auf nicht privilegierte Benutzer ab. Die empfohlene Losung fur privilegierte Benutzer (zum Beispiel durch Root ausgefuhrte Skripte) ist der Befehl runuser(1), der keine Benutzerkennung setzt, keine Authentifizierung erfordert und eine separate PAM-Konfiguration bereitstellt. Falls keine PAM-Sitzung erforderlich ist, wird empfohlen, den Befehl setpriv(1) zu verwenden. Beachten Sie, dass su in allen Fallen PAM (pam_getenvlist(3)) zum endgultigen Andern der Umgebung verwendet. Die Befehlszeilenoptionen wie --login oder --preserve-environment wirken sich auf die Umgebung aus, bevor sie von PAM verandert wird. Seit Version 2.38 setzt su die Ressourcenbegrenzungen RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE des Prozesses zuruck. OPTIONEN -c, --command Befehl ubergibt den angegebenen Befehl mit der Option -c an die Shell. Erstellt eine neue Sitzung mit*setsid*(2). Schauen Sie in --session-command, um dieselbe Sitzung beizubehalten. -f, --fast ubergibt -f an die Shell, was abhangig von der jeweiligen Shell nutzlich sein kann oder nicht. -g, --group Gruppe gibt die primare Gruppe an. Diese Option ist nur fur den Benutzer Root verfugbar. -G, --supp-group Gruppe gibt eine erganzende Gruppe an. Diese Option ist nur fur den Benutzer Root verfugbar. Die erste angegebene erganzende Gruppe wir auch als primare Gruppe verwendet, falls die Option --group nicht angegeben ist. -, -l, --login startet die Shell als Anmelde-Shell mit einer Umgebung ahnlich zu einer realen Anmeldung. Beachten Sie, dass auf systemd(1)-basierten Systemen eine neue Sitzung als echter Einstiegspunkt in das System definiert werden kann. su erstellt jedoch aus dieser Sicht keine echte Sitzung (durch PAM). Sie benotigen Werkzeuge wie systemd-run(1) oder machinectl(1), um eine vollstandige, echte Sitzung zu initiieren. su tut Folgendes: o clear all the environment variables except TERM, COLORTERM, NO_COLOR and variables specified by --whitelist-environment o initialize the environment variables HOME, SHELL, USER, LOGNAME, and PATH o change to the target user's home directory o set argv[0] of the shell to '-' in order to make the shell a login shell -m, -p, --preserve-environment erhalt die gesamte Umgebung, was bedeutet, dass weder HOME noch SHELL, USER oder LOGNAME gesetzt werden. Diese Option wird ignoriert, wenn die Option --login angegeben ist. -P, --pty erstellt ein Pseudo-Terminal fur die Sitzung. Das unabhangige Terminal gewahrleistet bessere Sicherheit, da der Benutzer das Terminal nicht mit der Originalsitzung teilt. Bitte beachten Sie den Sicherheitshinweis uber die TIOCSTI-Schwachstelle weiter unten. Die gesamte Sitzung kann auch in den Hintergrund verschoben werden, (zum Beispiel su --pty - Benutzer -c Anwendung &). Wenn das Pseudo-Terminal aktiviert ist, dann fungiert su als Proxy zwischen den Sitzungen (Standardein- und -ausgabe werden synchronisiert). Diese Funktion ist vorwiegend fur interaktive Sitzungen gedacht. Falls die Standardeingabe kein Terminal ist, sondern beispielsweise eine Pipe (zum Beispiel echo "date" | su --pty), dann wird der ECHO-Schalter fur das Pseudo-Terminal deaktiviert, um unordentliche Ausgaben zu vermeiden. -s, --shell Shell fuhrt die angegebene Shell anstelle der Vorgabe aus. Falls der Zielbenutzer eine eingeschrankte Shell hat (d.h. die nicht in /etc/shells aufgelistet ist), werden die Option --shell und die Umgebungsvariable SHELL ignoriert, ausser wenn der aufrufende Benutzer Root ist. Die auszufuhrende Shell wird nach den folgenden Regeln in dieser Reihenfolge ausgewahlt: o die durch --shell angegebene Shell o die in der Umgebungsvariable SHELL angegebene Shell, wenn die Option --preserve-environment nicht verwendet wird o die im >>passwd<<-Eintrag des Zielbenutzers angegebene Shell o /bin/sh --session-command=Befehl ist gleichbedeutend mit -c, erzeugt aber keine neue Sitzung (davon wird abgeraten). Bitte beachten Sie den Sicherheitshinweis uber die TIOCSTI-Schwachstelle weiter unten. -T, --no-pty erstellt im Gegensatz zu --pty und -P kein Pseudo-Terminal. Bitte beachten Sie den Sicherheitshinweis uber die TIOCSTI-Schwachstelle weiter unten. -w, --whitelist-environment Liste setzt die in der Kommata-getrennten Liste angegebenen Umgebungsvariablen nicht zuruck, wenn die Umgebung fur --login bereinigt wird. Die Positivliste wird fur die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH ignoriert. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version zeigt Versionsinformationen an und beendet das Programm. SIGNALE Nach dem Empfang von SIGINT, SIGQUIT oder SIGTERM beendet su seinen Kindprozess und anschliessend sich selbst mit dem empfangenen Signal. Der Kindprozess wird durch SIGTERM beendet, nach einem fehlgeschlagenen Versuch und zwei Sekunden Verzogerung wird der Kindprozess mit SIGKILL getotet. KONFIGURATIONSDATEIEN su liest die Konfigurationsdateien /etc/default/su und /etc/login.defs. Die folgenden Konfigurationseintrage sind fur su relevant: FAIL_DELAY (Zahl) gibt die Verzogerung in Sekunden im Falle eines Authentifizierungsfehlers an. Die Zahl muss eine nichtnegative Ganzzahl sein. ENV_PATH (Zeichenkette) definiert die Umgebungsvariable PATH fur einen normalen Benutzer. Der Vorgabewert ist _/usr/local/bin:/bin:/usr/bin*. ENV_ROOTPATH (Zeichenkette), ENV_SUPATH (Zeichenkette) definiert die Umgebungsvariable PATH fur root. ENV_SUPATH hat Vorrang. Der Vorgabewert ist /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin. ALWAYS_SET_PATH (boolescher Wert) Wenn auf yes gesetzt und --login und --preserve-environment nicht angegeben wurden, initialisiert su die Umgebungsvariable PATH. Die Umgebungsvariable PATH kann auf Systemen, auf denen /bin und /sbin in /usr zusammengefuhrt sind, anders sein. Diese Variable wird auch von der Befehlszeilenoption --login und den PAM-Systemeinstellungen (z.B. pam_env(8)) beeinflusst. EXIT-STATUS su gibt normalerweise den Ruckgabewert des Befehls aus, den es ausgefuhrt hat. Wenn der Befehl von einem Signal beendet wurde, gibt su die Signalnummer plus 128 zuruck. Von su selbst erzeugte Ruckgabewerte: 1 Allgemeiner Fehler vor dem Ausfuhren des angeforderten Befehls 126 Der angeforderte Befehl konnte nicht ausgefuhrt werden 127 Der angeforderte Befehl wurde nicht gefunden DATEIEN /etc/pam.d/su Standard-PAM-Konfigurationsdatei /etc/pam.d/su-l PAM-Konfigurationsdatei, falls --login angegeben wurde /etc/default/su Befehlsspezifische Logindef-Konfigurationsdatei /etc/login.defs Globale Logindef-Konfigurationsdatei SICHERHEITSHINWEISE Wenn su ein Terminal mit der ursprunglichen Sitzung teilt, ist es potenziell anfallig fur Privilegienausweitung durch TIOCSTI/TIOCLINUX-ioctl-Befehlsinjektion. Es gibt zwei integrierte Moglichkeiten, dies zu verhindern: Entweder Sie verwenden su mit der Option -c, wodurch eine neue Sitzung uber setsid(2) ohne steuerndes Terminal gestartet wird. Oder, falls Ihr Anwendungsfall ein steuerndes Terminal erfordert, zum Beispiel fur eine interaktive Sitzung, konnen Sie su anweisen, ein Pseudo-Terminal mit der Option --pty oder -P zu verwenden. Aus Sicherheitsgrunden protokolliert su alle fehlgeschlagenen Anmeldeversuche in der bmtp-Datei, schreibt jedoch nichts in die lastlog-Datei. Diese Losung erlaubt die Steuerung des Verhaltens von su durch die PAM-Konfiguration. Wenn Sie das Modul pam_lastlog(8) zur Ausgabe von Warnmeldungen zu fehlgeschlagenen Anmeldeversuchen verwenden wollen, dann muss pam_lastlog(8) so konfiguriert werden, dass es ebenfalls die lastlog-Datei aktualisiert. Zum Beispiel durch: session required pam_lastlog.so nowtmp GESCHICHTE Der Befehl su wurde aus dem su der GNU Coreutils abgeleitet, das auf einer Implementierung von David MacKenzie basiert. Die Version fur Util-linux wurde von Karel Zak restrukturiert. SIEHE AUCH setpriv(1), login.defs(5), shells(5), pam(8), runuser(1) FEHLER MELDEN Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem . VERFUGBARKEIT Der Befehl su ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.42.3 2026-09-02 SU(1)