The
su
command is used to become another user during a login session. Invoked without a
username,
su
defaults to becoming the superuser. The
-
option may be used to provide an environment similar to what the user would expect had the user logged in directly. The
-c
option may be used to treat the next argument as a command by most shells.
Options are recognized everywhere in the argument list. You can use the
--
argument to stop option parsing. The
-
option is special: it is also recognized after
--, but has to be placed before
username.
Der Benutzer wird gegebenenfalls nach einem Passwort gefragt. Ungültige Passworteingaben werden eine Fehlermeldung erzeugen. Sowohl erfolgreiche als auch misslungene Versuche werden protokolliert, um Missbrauch des Systems zu entdecken.
Die aktuelle Umgebung wird an die neue Shell übergeben. Der Wert von
$PATH
wird für normale Benutzer auf
/bin:/usr/bin
gesetzt, für Root auf
/sbin:/bin:/usr/sbin:/usr/bin. Dieses Verhalten kann durch die Definition von
ENV_PATH
und
ENV_SUPATH
in
/etc/login.defs
geändert werden.
Eine Subsystem-Anmeldung wird durch einen »*« als erstes Zeichen der Anmelde-Shell gekennzeichnet. Das angegebene Home-Verzeichnis wird als Wurzel für das Dateisystem verwendet, auf welchem der Benutzer tatsächlich angemeldet ist.
OPTIONEN
Die Optionen, die vom Befehl
su
unterstützt werden, sind:
-c, --command BEFEHL
-
gibt einen Befehl an, der von der Shell mittels ihrer Option
-c
ausgeführt wird
The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.
-, -l, --login
-
Eine Umgebung wird zur Verfügung gestellt, die der entspricht, die der Benutzer nach einer direkten Anmeldung erwartet.
When
-
is used, it must be specified before any
username. For portability it is recommended to use it as last option, before any
username. The other forms (-l
and
--login) do not have this restriction.
-s, --shell SHELL
-
die Shell, die gestartet wird
Die aufgerufene Shell wird bestimmt durch (höchste Priorität zuerst):
-
die Shell, die mit --shell angegeben wurde
-
Falls
--preserve-environment
verwendet wird, die Shell, die durch die Umgebungsvariable
$SHELL
festgelegt wird.
-
die Shell, die in
/etc/passwd
für den Zielbenutzer angegeben ist
-
/bin/sh, falls durch die obigen Methoden keine Shell gefunden werden kann
Falls der Zielbenutzer eine beschränkte Shell hat (d.h. das Feld für die Shell im Eintrag des Benutzers in
/etc/passwd
ist nicht in
/etc/shells) aufgeführt), werden die Option
--shell
und die Umgebungsvariable
$SHELL
nicht beachtet, sofern
su
nicht von Root aufgerufen wird.
-m, -p, --preserve-environment
-
Erhält die aktuelle Umgebung mit Ausnahme von:
$PATH
-
auf den Ausgangswert entsprechend der Optionen
ENV_PATH
oder
ENV_SUPATH
in
/etc/login.defs
zurücksetzen (siehe unten);
$IFS
-
auf
Bq<space><tab><newline>"
zurücksetzen, falls es verändert wurde
Falls der Zielbenutzer eine beschränkte Shell besitzt, hat diese Option keinen Effekt (sofern
su
nicht von Root aufgerufen wird).
Beachten Sie, dass Folgendes das Standardverhalten für die Umgebung ist:
-
Die Umgebungsvariablen
$HOME,
$SHELL,
$USER,
$LOGNAME,
$PATH
und
$IFS
werden zurückgesetzt.
-
Falls nicht
--login
verwendet wurde, wird die Umgebung mit der Ausnahme der genannten Variablen kopiert.
-
Falls
--login
verwendet wurde, werden die Variablen
$TERM,
$COLORTERM,
$DISPLAY
und
$XAUTHORITY
übernommen, wenn ihnen ein Wert zugewiesen wurde.
-
Falls
--login
verwendet wurde, werden die Umgebungsvariablen
$TZ,
$HZ
und
$MAIL
auf die in
/etc/login.defs
definierten Optionen
ENV_TZ,
ENV_HZ,
MAIL_DIR
und
MAIL_FILE
(siehe unten) gesetzt.
-
Wenn
--login
verwendet wird, können andere Umgebungsvariablen mit der Datei
ENVIRON_FILE
vergeben werden (siehe unten).
WARNUNGEN
Diese Version von
su
hat viele Kompilierungsoptionen. Deren Nützlichkeit hängt von den Anforderungen der jeweiligen Umgebung ab.
KONFIGURATION
Die folgenden Konfigurationsvariablen in
/etc/login.defs
beeinflussen das Verhalten dieses Werkzeugs:
CONSOLE (Zeichenkette)
-
Die Konfiguration erfolgt entweder über die Angabe des vollen Pfadnamens einer Datei, welche die Namen der Geräte enthält (eines pro Zeile), oder mit einer Liste der Gerätenamen, die mit »:« getrennt sind. Root kann sich nur auf diesen Geräten anmelden.
Wenn es unkonfiguriert gelassen wird, kann sich Root auf jedem Gerät anmelden.
Das Gerät soll ohne vorangestelltes /dev/ angegeben werden.
CONSOLE_GROUPS (Zeichenkette)
-
Liste von Gruppen, deren Mitglied der Benutzer wird, wenn der sich auf der Konsole anmeldet, die mit dem Parameter CONSOLE festgelegt wird. Standardmäßig ist die Liste leer.
Seien Sie vorsichtig. Benutzer können dauerhaft Zugang zu den Gruppen erlangen, auch wenn sie nicht auf der Konsole angemeldet sind.
DEFAULT_HOME (boolesch)
-
Legt fest, ob ein Login erlaubt wird, wenn mit cd nicht in das Home-Verzeichnis gewechselt werden kann. Standardmäßig wird dies nicht zugelassen.
Falls auf
yes
gesetzt, wird der Benutzer mit dem Wurzelverzeichnis (/) angemeldet, wenn mit cd nicht in sein Home-Verzeichnis gewechselt werden kann.
ENV_HZ (Zeichenkette)
-
Wenn vergeben, wird damit die Umgebungsvariable HZ definiert, wenn sich ein Benutzer anmeldet. Dem Wert muss ein
HZ=
vorangestellt werden. Ein üblicher Wert bei Linux ist
HZ=100.
ENVIRON_FILE (Zeichenkette)
-
Wenn diese Datei vorhanden ist, wird die Anmeldeumgebung aus ihr gelesen. Jede Zeile sollte die Form Name=Wert haben.
Zeilen, die mit einem # beginnen, werden als Kommentare behandelt und daher ignoriert.
ENV_PATH (Zeichenkette)
-
Wenn gesetzt, wird damit die Umgebungsvariable PATH definiert, wenn sich ein normaler Benutzer anmeldet. Der Wert ist eine Liste, deren Einträge durch Doppelpunkte getrennt sind (zum Beispiel
/bin:/usr/bin). Ihr kann ein
PATH=
vorangestellt werden. Der Standardwert ist
PATH=/bin:/usr/bin.
ENV_SUPATH (Zeichenkette)
-
Wenn gesetzt, wird damit die Umgebungsvariable PATH definiert, wenn sich der Superuser anmeldet. Der Wert ist eine Liste, deren Einträge durch Doppelpunkte getrennt sind (zum Beispiel
/sbin:/bin:/usr/sbin:/usr/bin). Ihr kann ein
PATH=
vorangestellt werden. Der Standardwert ist
PATH=/sbin:/bin:/usr/sbin:/usr/bin.
ENV_TZ (Zeichenkette)
-
Wenn gesetzt, wird damit die Umgebungsvariable TZ definiert, wenn sich ein Benutzer anmeldet. Der Wert kann der Name der Zeitzone sein, dem
TZ=
vorausgeht (zum Beispiel
TZ=CST6CDT), oder der vollständige Pfad der Datei, welche die Konfiguration der Zeitzone enthält (zum Beispiel
/etc/tzname).
Wenn ein vollständiger Pfadname angegeben wird, die Datei aber nicht existiert oder nicht lesbar ist, wird
TZ=CST6CDT
verwendet.
LOGIN_STRING (Zeichenkette)
-
Diese Zeichenkette wird bei der Eingabeaufforderung des Passworts (Prompt) verwendet. Standardmäßig wird »Password: « oder eine Übersetzung davon benutzt. Wenn Sie diese Variable definieren, wird die Eingabeaufforderung nicht übersetzt.
Wenn die Zeichenkette ein
%s
enthält, wird dies durch den Benutzernamen ersetzt.
MAIL_CHECK_ENAB (boolesch)
-
aktiviert die Prüfung und Anzeige des Status der Mailbox bei der Anmeldung
Sie sollten dies abschalten, wenn schon die Startdateien der Shell die Mails prüfen (»mailx -e« oder ähnliches).
MAIL_DIR (Zeichenkette)
-
Das Verzeichnis des Mail-Spools. Diese Angabe wird benötigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto verändert oder gelöscht wurde. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde.
MAIL_FILE (Zeichenkette)
-
Legt den Ort der Mail-Spool-Dateien eines Benutzers relativ zu seinem Home-Verzeichnis fest.
Die Variablen
MAIL_DIR
und
MAIL_FILE
werden von
useradd,
usermod
und
userdel
verwendet, um den Mail-Spool eines Benutzers zu erstellen, zu verschieben oder zu löschen.
Falls
MAIL_CHECK_ENAB
auf
yes
gesetzt ist, werden sie auch verwendet, um die Umgebungsvariable
MAIL
festzulegen.
QUOTAS_ENAB (boolesch)
-
aktiviert das Setzen von Resourcenbeschränkungen aus
/etc/limits
und von ulimit, umask und niceness aus dem gecos-Feld des Benutzers von passwd
SULOG_FILE (Zeichenkette)
-
Wenn angegeben, wird jeder Aufruf von su in dieser Datei protokolliert.
SU_NAME (Zeichenkette)
-
Damit kann die Anzeige des Namens des Befehls festgelegt werden, wenn »su -« ausgeführt wird. Wenn beispielsweise dies auf »su« gesetzt wurde, zeigt »ps« den Befehl als »-su« an. Wenn es dagegen nicht vergeben wurde, wird »ps« den Namen der Shell anzeigen, die ausgeführt wird, also etwa »-sh«.
SU_WHEEL_ONLY (boolesch)
-
Falls
yes, muss der Benutzer Mitglied der ersten Gruppe mit der GID 0 in
/etc/group
sein (auf den meisten Linux-Systemen heißt die
root), um mit
su
zu einem Konto mit der UID 0 wechseln zu können. Falls die Gruppe nicht existiert oder keine Mitglieder hat, kann niemand mittels
su
zur UID 0 wechseln.
SYSLOG_SU_ENAB (boolesch)
-
aktiviert das Protokollieren der Aktivitäten von
su
in »syslog« neben der Protokollierung in der sulog-Datei
USERGROUPS_ENAB (boolesch)
-
Erlaubt Benutzern, die nicht Root sind, die Umask-Gruppen-Bits auf ihre Umask-Bits zu setzen (Beispiel: 022 -> 002, 077 -> 007), falls die UID mit der GID identisch ist sowie der Benutzername mit dem Gruppennamen übereinstimmt.
Wenn der Wert
yes
ist, wird
userdel
die Gruppe des Benutzers entfernen, falls sie keine Mitglieder mehr hat, und
useradd
wird standardmäßig eine Gruppe mit dem Namen des Benutzers erstellen.
DATEIEN
/etc/passwd
-
Informationen zu den Benutzerkonten
/etc/shadow
-
verschlüsselte Informationen zu den Benutzerkonten
/etc/login.defs
-
Konfiguration der Shadow-Passwort-Werkzeugsammlung
RÜCKGABEWERTE
Wenn
su
erfolgreich ausgeführt wird, gibt es den Rückgabewert des mit ihm ausgeführten Befehls zurück.
Wenn dieser Befehl mit einem Signal beendet wurde, gibt
su
die Nummer des Signals plus 128 zurück.
Wenn
su
den Befehl mit kill beenden musste (weil er der Aufforderung, sich zu beenden, nicht rechtzeitig nachgekommen ist), gibt es 255 zurück.
Einige Rückgabewerte von
su
sind unabhängig von dem ausgeführten Befehl:
0
-
Erfolg (nur bei
--help)
1
-
System- oder Anmeldefehler
126
-
Der angegebene Befehl konnte nicht gefunden werden.
127
-
Der angegebene Befehl konnte nicht ausgeführt werden.
SIEHE AUCH
login(1),
login.defs(5),
sg(1),
sh(1).