Scroll to navigation

SU(1) Dienstprogramme für Benutzer SU(1)

BEZEICHNUNG

su - einen Befehl unter anderer Benutzer- und Gruppenkennung ausführen

ÜBERSICHT

su [options] [-] [user [argument...]]

BESCHREIBUNG

su allows commands to be run with a substitute user and group ID.

Wenn beim Aufruf kein Benutzer angegeben wird, öffnet su standardmäßig eine interaktive Shell als_root_. Wenn ein Benutzer angegeben wird, können zusätzliche Argumente übergeben werden, wobei diese an die Shell weitergeleitet werden.

Aus Gründen der Abwärtskompatibilität wechselt su standardmäßig 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 für die Benutzerkonten- und Sitzungsverwaltung. Einige der in anderen su-Implementationen verfügbaren Konfigurationsoptionen, wie die Unterstützung für eine Gruppe »wheel«, müssen über PAM konfiguriert werden.

su is mostly designed for unprivileged users, the recommended solution for privileged users (e.g., scripts executed by root) is to use non-set-user-ID command runuser(1) that does not require authentication and provides separate PAM configuration. If the PAM session is not required at all then the recommended solution is to use command setpriv(1).

Beachten Sie, dass su in allen Fällen PAM (pam_getenvlist(3)) zum endgültigen Ändern der Umgebung verwendet. Die Befehlszeilenoptionen wie --login oder --preserve-environment wirken sich auf die Umgebung aus, bevor sie von PAM verändert wird.

Seit Version 2.38 setzt su die Ressourcenbegrenzungen RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE des Prozesses zurück.

OPTIONEN

-c, --command=Befehl

übergibt den Befehl mit der Option -c an die Shell.

-f, --fast

übergibt -f an die Shell, was abhängig von der jeweiligen Shell nützlich sein kann oder nicht.

-g, --group=Gruppe

gibt die primäre Gruppe an. Diese Option ist nur für den Benutzer Root verfügbar.

-G, --supp-group=Gruppe

gibt eine ergänzende Gruppe an. Diese Option ist nur für den Benutzer Root verfügbar. Die erste angegebene ergänzende Gruppe wir auch als primäre Gruppe verwendet, falls die Option --group nicht angegeben ist.

-, -l, --login

Start the shell as a login shell with an environment similar to a real login.

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 does:

•löscht alle Umgebungsvariablen außer TERM und jene, die durch --whitelist-environment angegeben wurden.

•initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH.

•wechselt in das Home-Verzeichnis des Zielbenutzers.

•setzt argv[0] der Shell auf »-«, um die Shell zur Anmelde-Shell zu machen.

-m, -p, --preserve-environment

erhält 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

erzeugt ein Pseudo-Terminal für die Sitzung. Das unabhängige Terminal erhöht die Sicherheit, da der Benutzer sein Terminal nicht mit der ursprünglichen Sitzung gemeinsam nutzt. Dadurch wird es möglich, TIOCSTI-Terminalinjizierung via ioctl und weitere Sicherheitsangriffe gegen Terminal-Dateideskriptoren zu verhindern. Die gesamte Sitzung kann auch in den Hintergrund verschoben werden, (zum Beispiel su --pty - Benutzername -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 für interaktive Sitzungen gedacht. Falls die Standardeingabe kein Terminal ist, sondern beispielsweise eine Pipe (zum Beispiel echo "date" | su --pty), dann wird der ECHO-Schalter für das Pseudo-Terminal deaktiviert, um unordentliche Ausgaben zu vermeiden.

-s, --shell=Shell

Run the specified shell instead of the default. If the target user has a restricted shell (i.e., not listed in /etc/shells), the --shell option and the SHELL environment variables are ignored unless the calling user is root.

The shell to run is selected according to the following rules, in order:

•die durch --shell angegebene Shell

•die in der Umgebungsvariable SHELL angegebene Shell, wenn die Option --preserve-environment nicht verwendet wird

•die im »passwd«-Eintrag des Zielbenutzers angegebene Shell

•/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=Liste

setzt die in der Kommata-getrennten Liste angegebenen Umgebungsvariablen nicht zurück, wenn die Umgebung für --login bereinigt wird. Die Positivliste wird für 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 anschließend sich selbst mit dem empfangenen Signal. Der Kindprozess wird durch SIGTERM beendet, nach einem fehlgeschlagenen Versuch und zwei Sekunden Verzögerung wird der Kindprozess mit SIGKILL getötet.

KONFIGURATIONSDATEIEN

su reads the /etc/default/su and /etc/login.defs configuration files. The following configuration items are relevant for su:

FAIL_DELAY (Zahl)

gibt die Verzögerung in Sekunden im Falle eines Authentifizierungsfehlers an. Die Zahl muss eine nichtnegative Ganzzahl sein.

ENV_PATH (Zeichenkette)

definiert die Umgebungsvariable PATH für einen normalen Benutzer. Der Vorgabewert ist _/usr/local/bin:/bin:/usr/bin*.

ENV_ROOTPATH (Zeichenkette), ENV_SUPATH (Zeichenkette)

definiert die Umgebungsvariable PATH für 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 zusammengeführt sind, anders sein. Diese Variable wird auch von der Befehlszeilenoption --login und den PAM-Systemeinstellungen (z.B. pam_env(8)) beeinflusst.

EXIT-STATUS

su normally returns the exit status of the command it executed. If the command was killed by a signal, su returns the number of the signal plus 128.

Von su selbst erzeugte Rückgabewerte:

1

Allgemeiner Fehler vor dem Ausführen des angeforderten Befehls

126

Der angeforderte Befehl konnte nicht ausgeführt 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 Sicherheitsgründen protokolliert su alle fehlgeschlagenen Anmeldeversuche in der bmtp-Datei, schreibt jedoch nichts in die lastlog-Datei. Diese Lösung 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 für 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 auf <https://github.com/util-linux/util-linux/issues>.

VERFÜGBARKEIT

Der Befehl su ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.

2024-04-27 util-linux 2.40