su

Funktion

su (superuser) ändert User- und Gruppen-ID

Syntax

su [-flmp] [-c Befehl] [-s Shell] [-login] [-fast] [-preserve-environment] [-command=Befehl] [-shell=Shell] [-] [ Name [Argument ...]]

Beschreibung

su startet eine neue Shell unter einer neuen Benutzerkennung (UID) und Gruppenkennung (GID). Wie bei einem neuen Login wird das Paßwort des Benutzers abgefragt. Wenn kein Name angegeben ist, wird zur ID 0 gewechselt, man ändert die ID also in die der ,,Superuserin``. Allein sie kann mit dem su-Kommando die Identität jedes beliebigen Benutzers annehmen, ohne nach einem Paßwort gefragt zu werden. Damit (und nur damit) ist es möglich, auch unter den Verwaltungsnamen wie bin, news oder daemon zu arbeiten, die normalerweise durch ein Sperrpaßwort gesichert werden.

Ohne weitere Optionen wechselt das su-Kommando das Arbeitsverzeichnis nicht, setzt aber die Umgebungsvariablen HOME und SHELL auf die neuen Werte aus /etc/passwd. Wenn die neue Identität nicht die der Superuserin ist, wird auch die LOGNAME Umgebungsvariable entsprechend verändert.

In keinem Fall wird von su ein Eintrag in der Datenbank /etc/utmp angelegt. Das bedeutet, daß ein ,,Login`` mit su nicht mit last oder who angezeigt wird. Insbesondere geben auch das loginname-Kommando und die getlogin(3) Bibliotheksfunktion weiterhin den ursprünglichen Loginnamen aus.

Wenn außer dem Namen weitere Argumente in der Kommandozeile angegeben sind, werden sie der Shell übergeben.

Optionen

-f
(fast) startet die Shell mit der Option `-f', die bei der (t)csh das Lesen der Initialisierungsdatei unterdrückt; bei der bash wird die Pfadnamenerweiterung unterdrückt, was nicht unbedingt das gewünschte Verhalten ist
-l
(login) die Shell wird aufgerufen wie bei einem login als Name; es werden alle Umgebungsvariablen außer TERM, HOME und SHELL entfernt, der Pfad auf einen eincompilierten Wert gesetzt und ein `-' als erstes Zeichen in die Kommandozeile beim Aufruf der Shell geschrieben; daraufhin startet die Shell als Loginshell mit den entsprechenden Initialisierungen; die LOGNAME Variable wird auch für die Superuserin neu gesetzt
-p und -m
(preserve environment) erhält die alte Systemumgebung, das heißt die Umgebungsvariablen HOME, SHELL, USER und LOGNAME werden nicht verändert; es wird die in der Umgebungsvariablen SHELL bestimmte Shell gestartet, wenn nicht mit der `-s' Option eine andere Shell angegeben ist
-c Befehl [Argument ]
führt nur den Befehl mit dem Argument aus
-s Shell
startet die Shell anstelle der in der Paßwortdatei festgelegten Shell (bzw. /bin/sh)