su - Führen Sie einen Befehl mit einer Ersatzbenutzer- und Gruppen-ID aus
SYNOPSIS
su [Optionen] [-] [Benutzer [Argument...]]
BESCHREIBUNG
su ermöglicht das Ausführen von Befehlen mit einer Ersatzbenutzer- und Gruppen-ID.
Wenn kein Benutzer angegeben wird, führt su standardmäßig eine interaktive Shell als Root aus. Wenn ein Benutzer angegeben wird, können zusätzliche Argumente übergeben werden, die dann an die Shell übergeben werden.
Zur Abwärtskompatibilität ändert su standardmäßig nicht das aktuelle Verzeichnis und setzt nur die Umgebungsvariablen HOME und SHELL (sowie USER und LOGNAME, wenn der Zielbenutzer nicht Root ist). Es wird empfohlen, immer die Option --login (anstelle ihrer Kurzform -) zu verwenden, um Nebenwirkungen zu vermeiden, die durch das Mischen von Umgebungen entstehen können.
Diese Version von su verwendet PAM für die Authentifizierung, Kontenverwaltung und Sitzungsverwaltung. Einige Konfigurationsoptionen, die in anderen su-Implementierungen zu finden sind, wie z. B. die Unterstützung für eine "Wheel"-Gruppe, müssen über PAM konfiguriert werden.
su ist hauptsächlich für nicht privilegierte Benutzer gedacht; die empfohlene Lösung für privilegierte Benutzer (z. B. Skripte, die von Root ausgeführt werden) ist die Verwendung des Befehls runuser(1), der keine Benutzer-ID-Änderung erfordert und eine separate PAM-Konfiguration bietet. Wenn überhaupt keine PAM-Sitzung erforderlich ist, ist die empfohlene Lösung die Verwendung des Befehls setpriv(1).
Beachten Sie, dass su in allen Fällen PAM (pam_getenvlist(3)) verwendet, um die endgültige Umgebung zu ändern. Befehlszeilenoptionen wie --login und --preserve-environment wirken sich auf die Umgebung aus, bevor sie von PAM geändert wird.
Seit Version 2.38 setzt su die Prozessressourcenlimits RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE zurück.
OPTIONEN
-c, --command Befehl
Übergibt den Befehl mit der Option -c an die Shell.
-f, --fast
Übergibt -f an die Shell, was je nach Shell nützlich sein kann oder auch nicht.
-g, --group Gruppe
Gibt die primäre Gruppe an. Diese Option ist nur für den Root-Benutzer verfügbar.
-G, --supp-group Gruppe
Gibt eine zusätzliche Gruppe an. Diese Option ist nur für den Root-Benutzer verfügbar. Die erste angegebene zusätzliche Gruppe wird auch als primäre Gruppe verwendet, wenn die Option --group nicht angegeben wird.
-, -l, --login
Startet die Shell als Anmeldeshell mit einer Umgebung, die einer echten Anmeldung ähnelt.
Beachten Sie, dass in Systemd-basierten Systemen eine neue Sitzung als echter Einstiegspunkt in das System definiert werden kann. su erstellt jedoch keine echte Sitzung (durch PAM) aus dieser Sicht. Sie müssen Tools wie systemd-run oder machinectl verwenden, um eine vollständige, echte Sitzung zu starten.
su macht Folgendes:
löscht alle Umgebungsvariablen, mit Ausnahme von TERM und Variablen, die mit --whitelist-environment angegeben werden
initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH
Änderungen am Home-Verzeichnis des Zielbenutzers
Setzt argv[0] der Shell auf '-', um die Shell zu einer Login-Shell zu machen
-m, -p, --preserve-environment
Behält die gesamte Umgebung bei, d.h. setzt HOME, SHELL, USER oder LOGNAME nicht. Diese Option
wird ignoriert, wenn die Option --login angegeben ist.
-P, --pty
Erstellt ein Pseudo-Terminal für die Sitzung. Das unabhängige Terminal bietet eine bessere
Sicherheit, da der Benutzer kein Terminal mit der ursprünglichen Sitzung teilt. Dies kann verwendet
werden, um TIOCSTI ioctl-Terminal-Injectionen und andere Sicherheitsangriffe auf Terminal-Dateideskriptoren
zu vermeiden. Die gesamte Sitzung kann auch in den Hintergrund verschoben werden (z. B. su --pty -
user -c application &). Wenn das Pseudo-Terminal aktiviert ist, fungiert su als Proxy zwischen den
Sitzungen (synchronisiert stdin und stdout).
Dieses Feature ist hauptsächlich für interaktive Sitzungen konzipiert. Wenn die Standardeingabe
kein Terminal ist, sondern beispielsweise eine Pipe (z. B. echo "date" | su --pty), wird dann die
ECHO-Flagge für das Pseudo-Terminal deaktiviert, um eine unübersichtliche Ausgabe zu vermeiden.
-s, --shell shell
Führt die angegebene Shell anstelle der Standard-Shell aus. Wenn der Zielbenutzer eine eingeschränkte
Shell hat (d.h. nicht in /etc/shells aufgeführt ist), werden die Option --shell und die Umgebungsvariable
SHELL ignoriert, es sei denn, der aufrufende Benutzer ist root.
Die auszuführende Shell wird gemäß den folgenden Regeln ausgewählt, in dieser Reihenfolge:
die mit --shell angegebene Shell
die in der Umgebungsvariable SHELL angegebene Shell, wenn die Option --preserve-environment
verwendet wird
die in dem passwd-Eintrag des Zielbenutzers aufgeführte Shell
/bin/sh
--session-command=command
Wie -c, aber es wird keine neue Sitzung erstellt. (Nicht empfohlen.)
-T, --no-pty
Erstellt kein Pseudo-Terminal, das Gegenteil von --pty und -P. Beachten Sie, dass das Ausführen
ohne ein Pseudo-Terminal das Sicherheitsrisiko einer Privilegien-Eskalation durch TIOCSTI/TIOCLINUX
ioctl-Befehlsinjektionen eröffnet.
-w, --whitelist-environment list
Setzt die in der durch Kommas getrennten Liste angegebenen Umgebungsvariablen nicht zurück, wenn die
Umgebung für --login gelöscht wird. Die Whitelist wird für die Umgebungsvariablen HOME, SHELL,
USER, LOGNAME und PATH ignoriert.
-h, --help
Zeigt Hilfetext an und beendet das Programm.
-V, --version
Zeigt die Version an und beendet das Programm.
SIGNALE
Beim Empfang von SIGINT, SIGQUIT oder SIGTERM beendet su sein Kind und beendet dann selbst mit dem
empfangenen Signal. Das Kind wird mit SIGTERM beendet, nach einem erfolglosen Versuch und einer
Verzögerung von 2 Sekunden wird das Kind mit SIGKILL getötet.
KONFIGURATIONSDATEIEN
su liest die Konfigurationsdateien /etc/default/su und /etc/login.defs. Die folgenden
Konfigurationselemente sind für su relevant:
FAIL_DELAY (Zahl)
Verzögerung in Sekunden im Falle eines Authentifizierungsfehlers. Die Zahl muss eine nicht-negative
Ganzzahl sein.
ENV_PATH (Zeichenkette)
Definiert die PATH-Umgebungsvariable für einen normalen Benutzer. Der Standardwert ist
/usr/local/bin:/bin:/usr/bin.
ENV_ROOTPATH (Zeichenkette), ENV_SUPATH (Zeichenkette)
Definiert die PATH-Umgebungsvariable für root. ENV_SUPATH hat Vorrang. Der Standardwert ist
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.
ALWAYS_SET_PATH (boolesch)
Wenn auf „ja“ gesetzt und --login und --preserve-environment nicht angegeben wurden, initialisiert su den Pfad.
Die Umgebungsvariable PATH kann auf Systemen, bei denen /bin und /sbin zu /usr zusammengeführt werden, unterschiedlich sein. Diese Variable wird auch durch die Kommandozeilenoption --login und die PAM-Systemeinstellungen (z. B. pam_env(8)) beeinflusst.
Rückgabewerte
^ u gibt normalerweise den Rückgabewert des ausgeführten Befehls zurück. Wenn der Befehl durch ein Signal beendet wurde, gibt su die Nummer des Signals plus 128 zurück.
Rückgabewerte, die von su selbst generiert werden:
1 Allgemeiner Fehler vor der Ausführung des angeforderten Befehls
126 Der angeforderte Befehl konnte nicht ausgeführt werden
127 Der angeforderte Befehl wurde nicht gefunden
DATEIEN
/etc/pam.d/su
Standardmäßige PAM-Konfigurationsdatei
/etc/pam.d/su-l
PAM-Konfigurationsdatei, wenn `--login` angegeben ist
/etc/default/su
befehlsspezifische `logindef`-Konfigurationsdatei
/etc/login.defs
globale `logindef`-Konfigurationsdatei
HINWEISE
Aus Sicherheitsgründen protokolliert su fehlgeschlagene Anmeldeversuche immer in der Datei btmp, schreibt aber keine Einträge in die Datei lastlog. Diese Lösung kann verwendet werden, um das Verhalten von su über die PAM-Konfiguration zu steuern. Wenn Sie das Modul pam_lastlog(8) verwenden möchten, um eine Warnmeldung über fehlgeschlagene Anmeldeversuche auszugeben, muss pam_lastlog(8) so konfiguriert werden, dass es auch die Datei lastlog aktualisiert. Zum Beispiel durch:
session required pam_lastlog.so nowtmp
HISTORIE
Dieser su-Befehl wurde aus dem su-Befehl von coreutils abgeleitet, der auf einer Implementierung von David MacKenzie basierte. Die util-linux-Version wurde von Karel Zak überarbeitet.
SIEHE AUCH
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
FEHLERMELDUNGEN
Für Fehlermeldungen verwenden Sie das Issue-Tracker [https://github.com/util-linux/util-linux/issues].
VERFÜGBARKEIT
Der su-Befehl ist Teil des Pakets util-linux, das vom Linux Kernel Archive [https://www.kernel.org/pub/linux/utils/util-linux/] heruntergeladen werden kann.