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.
Un mot de passe sera demandé à l'utilisateur, si nécessaire. Les mots de passe incorrects produisent un message d'erreur. Toutes les tentatives, réussies ou non, sont enregistrées afin de détecter tout abus du système.
L'environnement actuel est fourni au nouvel interpréteur de commandes. La valeur de
$PATH
est réinitialisée à
/bin:/usr/bin
pour les utilisateurs normaux, ou à
/sbin:/bin:/usr/sbin:/usr/bin
pour le superutilisateur. Ce comportement peut être modifié avec les paramètres
ENV_PATH
et
ENV_SUPATH
dans
/etc/login.defs.
Une connexion à un sous-système est indiquée par la présence d'un « * » comme premier caractère de l'interpréteur de commandes initial. Le répertoire personnel sera utilisé comme racine d'un nouveau système de fichiers dans lequel l'utilisateur sera connecté.
OPTIONS
Les options applicables à la commande
su
sont :
-c, --command COMMANDE
-
Indiquer une commande qui sera invoquée par l'interpréteur de commandes en utilisant son option
-c
The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.
-, -l, --login
-
Fournir à l'utilisateur un environnement similaire à celui qu'il aurait obtenu s'il s'était connecté directement.
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 INTERPRÉTEUR
-
Interpréteur de commande devant être appelé.
L'interpréteur de commandes à appeler est choisi parmi (le choix de plus haute priorité en tête) :
-
Interpréteur de commande indiqué par --shell.
-
Si
--preserve-environment
est utilisé, l'interpréteur de commandes indiqué par la variable d'environnement
$SHELL
sera utilisé.
-
Interpréteur de commandes indiqué dans
/etc/passwd
pour l'utilisateur cible.
-
/bin/sh
si aucun interpréteur de commandes ne peut être trouvé par l'une des méthodes ci-dessus.
Si l'utilisateur cible possède un interpréteur de commande restreint (par exemple, le champ de l'interpréteur de commande dans
/etc/passwd
n'est pas renseigné dans
/etc/shells), alors, ni l'option
--shell
ni la variable d'environnement
$SHELL
ne seront prises en compte à moins que
su
ne soit appelé par le superutilisateur.
-m, -p, --preserve-environment
-
Préserver l'environnement actuel, sauf pour :
$PATH
-
réinitialise suivant les options
ENV_PATH
ou
ENV_SUPATH
dans
/etc/login.defs
(voir ci-dessous) :
$IFS
-
réinitialise à
« <space><tab><newline> », s'il a été défini.
Si l'utilisateur cible possède un interpréteur de commandes restreint, cette option n'a aucun effet (à moins que
su
ne soit appelé par le superutilisateur).
Notez que le comportement par défaut pour l'environnement est le suivant :
-
Les variables d'environnement
$HOME,
$SHELL,
$USER,
$LOGNAME,
$PATH
et
$IFS
sont réinitialisées.
-
Si
--login
n'est pas utilisée, l'environnement est copié sauf pour les variables ci-dessus.
-
Si
--login
est utilisée, les variables d'environnement
$TERM,
$COLORTERM,
$DISPLAY
et
$XAUTHORITY
sont copiées si elles ont été définies.
-
Si
--login
est utilisée, les variables d'environnement
$TZ,
$HZ
et
$MAIL
sont configurées en accord avec les options
ENV_TZ,
ENV_HZ,
MAIL_DIR
et
MAIL_FILE
de
/etc/login.defs
(voir ci-dessous).
-
Si
--login
est utilisée, les autres variables d'environnement peuvent être configurées par le fichier
ENVIRON_FILE
(voir ci-dessous).
AVERTISSEMENTS
Cette version de
su
a de nombreuses options de compilation. Seules certaines d'entre elles peuvent avoir été activées sur votre site.
CONFIGURATION
Les variables de configuration suivantes dans
/etc/login.defs
modifient le comportement de cet outil :
CONSOLE (chaîne de caractères)
-
Si définie, soit un chemin complet du fichier contenant les noms de périphériques (un par ligne), soit une liste de noms du périphérique délimitée par des « : ». Les connexions d'un administrateur ne seront autorisées que depuis ces périphériques.
S'il n'est pas défini, root pourra se connecter depuis n'importe quel périphérique.
Le périphérique doit être précisé sans le préfixe /dev/.
CONSOLE_GROUPS (chaîne de caractères)
-
Une liste de groupes à rajouter aux groupes supplémentaires de l'utilisateur lors d'une connexion sur une console (déterminé par le paramètre CONSOLE). Par défaut, aucun groupe n'est ajouté.
À utiliser avec précaution : il est possible que les utilisateurs aient un accès permanent à ces groupes, et cela même s'ils ne sont pas connectés sur la console.
DEFAULT_HOME (booléen)
-
Indiquer si la connexion est permise si on ne peut pas accéder au répertoire personnel. Le réglage par défaut est « no ».
Si elle est configurée à
yes, l'utilisateur va se connecter dans le répertoire racine (/) s'il n'est pas possible d'accéder à son répertoire personnel.
ENV_HZ (chaîne de caractères)
-
Si définie, sera utilisée pour définir la variable d'environnement HZ lorsqu'un utilisateur se connecte. La valeur doit être précédée par
HZ=. Une valeur commune sur Linux est
HZ=100.
ENVIRON_FILE (chaîne de caractères)
-
Si ce fichier existe et est lisible, l'environnement de connexion sera lu à partir de lui. Chaque ligne doit être sous la forme nom=valeur.
Les lignes commençant par un « # » sont considérées comme des commentaires, et sont ignorées.
ENV_PATH (chaîne de caractères)
-
Si définie, sera utilisée pour définir la variable d'environnement PATH quand un utilisateur ordinaire se connecte. La valeur est une liste de chemins séparés par des deux points (par exemple
/bin:/usr/bin) et peut être précédée par
PATH=. La valeur par défaut est
PATH=/bin:/usr/bin.
ENV_SUPATH (chaîne de caractères)
-
Si définie, sera utilisée pour définir la variable d'environnement PATH quand le super-utilisateur se connecte. La valeur est une liste de chemins séparés par deux points (par exemple
/sbin:/bin:/usr/sbin:/usr/bin) et peut être précédée par
PATH=. La valeur par défaut est
PATH=/sbin:/bin:/usr/sbin:/usr/bin.
ENV_TZ (chaîne de caractères)
-
Si définie, sera utilisée pour définir la variable d'environnement TZ quand un utilisateur se connecte. La valeur peut être le nom d'un fuseau horaire précédé par
TZ=
(par exemple
TZ=CST6CDT), ou le chemin complet vers le fichier contenant la spécification du fuseau horaire (par exemple
/etc/tzname).
Si un chemin complet est spécifié mais que le fichier n'existe pas ou ne peut pas être lu, la valeur par défaut utilisée est
TZ=CST6CDT.
LOGIN_STRING (chaîne de caractères)
-
La chaîne de caractères utilisée pour l'invite de mot de passe. La valeur par défaut est d'utiliser "Password: " (« mot de passe : »), ou une traduction de cette chaîne. Si vous définissez cette variable, l'invite ne sera pas traduite.
Si la chaîne contient
%s, ces caractères seront remplacés par le nom de l'utilisateur.
MAIL_CHECK_ENAB (booléen)
-
Activer le contrôle et l'affichage du statut de la boîte aux lettres durant la connexion.
Vous devriez le désactiver si les fichiers de démarrage de l'interpréteur de commandes vérifient déjà la présence de courriers (« mail -e » ou équivalent).
MAIL_DIR (chaîne de caractères)
-
Répertoire d'attente des courriels (« mail spool directory »). Ce paramètre est nécessaire pour manipuler les boîtes à lettres lorsque le compte d'un utilisateur est modifié ou supprimé. S'il n'est pas spécifié, une valeur par défaut définie à la compilation est utilisée.
MAIL_FILE (chaîne de caractères)
-
Définir l'emplacement des boîtes aux lettres des utilisateurs relativement à leur répertoire personnel.
Les paramètres
MAIL_DIR
et
MAIL_FILE
sont utilisés par
useradd,
usermod
et
userdel
pour créer, déplacer ou supprimer les boîtes aux lettres des utilisateurs.
Si
MAIL_CHECK_ENAB
est réglé sur
yes, ces variables servent également à définir la variable d'environnement
MAIL.
QUOTAS_ENAB (booléen)
-
Activer la mise en place de limites de resources depuis
/etc/limits
et ulimit, umask et niveau nice depuis les champs gecos de passwd.
SULOG_FILE (chaîne de caractères)
-
Si définie, les activités de su seront enregistrées dans le fichier.
SU_NAME (chaîne de caractères)
-
Si définie, le nom de la commande à afficher lorsque « su - » est exécutée. Par exemple, si elle est définie à « su » alors un « ps » affichera la commande comme « -su ». Si non définie, alors « ps » affichera le nom du shell qui sera en fait exécuté, par exemple quelque chose comme « -sh ».
SU_WHEEL_ONLY (booléen)
-
Si
yes, l'utilisateur doit faire partie des membres du groupe avec le premier gid 0 dans
/etc/group
(appelé
root
sur la plupart des systèmes Linux) pour être capable de
su
vers des comptes à uid 0. Si ce groupe n'existe pas ou est vide, personne ne pourra
su
vers un uid 0.
SYSLOG_SU_ENAB (booléen)
-
Activer la journalisation « syslog » de l'activité de
su
- en plus de la journalisation sulog.
USERGROUPS_ENAB (booléen)
-
Activer la mise en place de bits de masque de groupe (« umask group bits ») identiques à ceux du propriétaire (exemple : 022 -> 002, 077 -> 007) pour les utilisateurs non privilégiés, si l'UID est identique au GID et que l'identifiant de connexion est identique au groupe principal.
Si cette variable est configurée à
yes,
userdel
supprimera le groupe de l'utilisateur s'il ne contient pas d'autres membres, et
useradd
créera par défaut un groupe portant le nom de l'utilisateur.
FICHIERS
/etc/passwd
-
Informations sur les comptes des utilisateurs.
/etc/shadow
-
Informations sécurisées sur les comptes utilisateurs.
/etc/login.defs
-
Configuration de la suite des mots de passe cachés « shadow password ».
VALEURS DE RETOUR
En cas de succès,
su
renvoie la valeur de sortie de la commande qu'il a exécutée.
Si cette commande s'est terminée par un signal,
su
y ajoute 128 et renvoie le résultat.
Si
su
doit tuer la commande (parce qu'il a été demandé de terminer et que la commande ne s'est pas terminée à temps),
su
renvoie 255.
Certaines valeurs de retour de
su
sont indépendantes de la commande exécutée :
0
-
succès (--help
uniquement)
1
-
Échec système ou d'authentification
126
-
La commande demandée n'a pas été trouvée.
127
-
La commande demandée n'a pas pu être exécutée.
VOIR AUSSI
login(1),
login.defs(5),
sg(1),
sh(1).