SU(1) Dienstprogramme fur Benutzer SU(1) BEZEICHNUNG su - einen Befehl unter anderer Benutzer- und Gruppenkennung ausfuhren UBERSICHT su [Optionen] [-] [Benutzer [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-Implementationen 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 command ubergibt den Befehl mit der Option -c an die Shell. -f, --fast ubergibt -f an die Shell, was abhangig von der jeweiligen Shell nutzlich sein kann oder nicht. -g, --group group gibt die primare Gruppe an. Diese Option ist nur fur den Benutzer Root verfugbar. -G, --supp-group group 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. Note that on systemd-based systems, a new session may be defined as a real entry point to the system. However, su does not create a real session (by PAM) from this point of view. You need to use tools like systemd-run or machinectl to initiate a complete, real session. su tut Folgendes: o loscht alle Umgebungsvariablen ausser TERM und jene, die durch --whitelist-environment angegeben wurden. o initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH. o wechselt in das Home-Verzeichnis des Zielbenutzers. o setzt argv[0] der Shell auf >>-<<, um die Shell zur Anmelde-Shell zu machen. -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 Create a pseudo-terminal for the session. The independent terminal provides better security as the user does not share a terminal with the original session. This can be used to avoid TIOCSTI ioctl terminal injection and other security attacks against terminal file descriptors. The entire session can also be moved to the background (e.g., su --pty - user -c application &). If the pseudo-terminal is enabled, then su works as a proxy between the sessions (sync stdin and stdout). 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). -T, --no-pty Do not create a pseudo-terminal, opposite of --pty and -P. Note that running without a pseudo-terminal opens the security risk of privilege escalation through TIOCSTI/TIOCLINUX ioctl command injection. -w, --whitelist-environment list 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 Display version and exit. 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 ANMERKUNGEN 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 Implementation 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 For bug reports, use the issue tracker . VERFUGBARKEIT Der Befehl su ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41 2025-03-29 SU(1)