SU(1) Commandes de l'utilisateur SU(1)

su - exécuter une commande avec un UID et un GID de substitution

su [options] [-] [utilisateur [argument...]]

su permet l'exécution de commandes avec un identifiant utilisateur (UID) et un identifiant de groupe (GID) de substitution.

S'il est appelé sans spécifier d'utilisateur, su exécute par défaut un interpréteur de commande interactif en tant que superutilisateur (root). Lorsqu'un utilisateur est indiqué, des arguments supplémentaires peuvent-être fournis, auquel cas ils sont passés à l'interpréteur.

Pour assurer la rétrocompatibilité, su ne change pas, par défaut, le répertoire actuel et ne définit que les variables d'environnement HOME et SHELL (ainsi que USER et LOGNAME si l'utilisateur cible n'est pas le superutilisateur). Il est recommandé de toujours utiliser l'option --login (au lieu de son raccourci -) pour éviter les effets secondaires causés par un mélange d'environnements.

Cette version de su utilise PAM pour l'authentification, le compte et la gestion de session. Quelques options de configuration trouvées dans d'autres implémentations de su, telles que la prise en charge d'un groupe wheel, doivent être configurées à l'aide de PAM.

su est surtout fait pour les utilisateurs non privilégiés, la solution recommandée pour les utilisateurs privilégiés (par exemple, les scripts exécutés par le superutilisateur) est d'utiliser la commande sans set-user-ID runuser(1) qui ne nécessite pas d'authentification et qui fournit une configuration PAM distincte. Si la session PAM n'est pas du tout indispensable, alors la solution recommandée consiste à utiliser la commande setpriv(1)

Remarquez que su utilise dans tous les cas PAM (pam_getenvlist(3)) pour effectuer la modification finale d'environnement. Les options de ligne de commandes comme --login et --preserve-environment affectent l'environnement avant qu'il ne soit modifié par PAM.

Depuis la version 2.38, su réinitialise les limites de ressource des RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS et RLIMIT_NOFILE.

-c, --command=commande

Passer une commande à l’interpréteur de commandes avec l'option -c.

-f, --fast

Passer -f à l’interpréteur de commandes, ce qui pourrait être utile ou non suivant l’interpréteur de commandes.

-g, --group=groupe

Indiquer le groupe primaire. Cette option n'est disponible que pour le superutilisateur.

-G, --supp-group=groupe

Indiquer un groupe supplémentaire. Cette option est réservée au superutilisateur. Le premier groupe supplémentaire spécifié est également utilisé comme groupe primaire si l'option --group n'est pas spécifiée.

-, -l, --login

Démarrer l’interpréteur de commandes comme un interpréteur de connexion avec un environnement similaire à une connexion réelle :
•efface toutes les variables d'environnement, à l'exception de TERM et des variables indiquées dans --whitelist-environment ;
•initialise les variables d'environnement HOME, SHELL, USER, LOGNAME et PATH ;
•se place dans le répertoire personnel de l'utilisateur cible ;
•définit argv[0] pour l’interpréteur de commandes à « - » pour faire de l’interpréteur de commandes un interpréteur de connexion.

-m, -p, --preserve-environment

Préserver la totalité de l'environnement, c'est à dire ne pas définir HOME, SHELL, USER ou LOGNAME. Cette option est ignorée si l'option --login est indiquée.

-P, --pty

Créer un pseudo-terminal pour la session. Le terminal indépendant assure une meilleure sécurité, car l'utilisateur ne partage pas le terminal avec la session d'origine. Cela permet d'éviter une injection d’ioctl TIOCSTI de terminal et d'autres attaques de sécurité à l'encontre des descripteurs de fichier du terminal. Il est également possible de mettre la session entière en arrière-plan (par exemple, su --pty - nom_utilisateur -c application &). Si le pseudo-terminal est activé, alors su fonctionne comme un serveur mandataire entre les sessions (avec une copie de l'entrée et de la sortie standards).

La plupart du temps, cette fonctionnalité est conçue pour des sessions interactives. Si l'entrée standard n'est pas un terminal, mais une redirection (« pipe ») (par exemple, echo "date" | su --pty), alors le drapeau ECHO du pseudo-terminal est désactivé pour éviter une sortie désordonnée.

-s, --shell=shell

Exécuter l’interpréteur de commandes shell indiqué au lieu de celui par défaut. L’interpréteur de commandes à exécuter est sélectionné d’après les règles suivantes dans cet ordre :
•l'interpréteur de commandes indiqué avec --shell ;
•l'interpréteur de commandes indiqué dans la variable d'environnement SHELL, si l'option --preserve-environment est utilisée ;
•l'interpréteur de commandes listé dans l'entrée passwd de l'utilisateur cible.
•/bin/sh

Si l'utilisateur cible a un interpréteur de commandes restreint (c’est-à-dire non listé dans /etc/shells), l'option --shell et la variable d'environnement SHELL est ignorée sauf si l'utilisateur appelant estle superutilisateur.

--session-command=commande

Comme -c, mais sans créer de nouvelle session (déconseillé).

-w, --whitelist-environment=liste

Ne pas réinitialiser les variables d'environnement spécifiées dans la liste séparées par des virgules lors du nettoyage de l'environnement pour --login (une connexion). La liste blanche est ignorée pour les variables d'environnement HOME, SHELL, USER, LOGNAME et PATH.

-h, --help

Afficher l’aide-mémoire puis quitter.

-V, --version

Afficher la version puis quitter.

Dès la réception de SIGINT, SIGQUIT ou de SIGTERM, su termine son processus enfant et puis se termine lui-même avec le signal reçu. Le processus enfant est terminé par SIGTERM, après un essai infructueux et deux secondes de délai, le processus enfant est tué par SIGKILL.

su lit les fichiers de configuration /etc/default/su et /etc/login.defs. Les éléments de configuration suivants sont significatifs pour su :

FAIL_DELAY (nombre)

Délai en secondes en cas d'échec d'authentification. Le nombre doit être un entier non-négatif.

ENV_PATH (chaîne)

Définit la variable d'environnement PATH pour un utilisateur ordinaire. La valeur par défaut est /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (chaîne), ENV_SUPATH (chaîne)

Définit la variable d'environnement PATH pour le superutilisateur. ENV_SUPATH est prioritaire. La valeur par défaut est /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

ALWAYS_SET_PATH (booléen)

Si définie à yes et que ni --login, ni --preserve-environment n’étaient indiquées, su initialise PATH.

La variable d'environnement PATH peut être différente sur des systèmes où /bin et /sbin sont fusionnés dans /usr ; cette variable est aussi affectée par l'option --login de la ligne de commandes et le paramétrage du système PAM (c'est-à-dire, pam_env(8)).

su renvoie normalement le code de retour de la commande exécutée. Si lacommande a été tuée par un signal, su renvoie le numéro du signal plus 128.

Le code de retour généré par su lui-même est un des suivants :

1

Erreur générique avant l'exécution de la commande demandée

126

La commande demandée n'a pas pu être exécutée

127

La commande demandée n'a pas été trouvée

/etc/pam.d/su

fichier de configuration de PAM par défaut

/etc/pam.d/su-l

fichier de configuration de PAM si --login est spécifié

/etc/default/su

fichier de configuration logindef spécifique à la commande

/etc/login.defs

fichier de configuration logindef général

Pour des raisons de sécurité, su enregistre toujours les tentatives de connexion échouées dans le fichier btmp, mais n'écrit pas du tout dans le fichier lastlog. Cette solution peut être utilisée pour contrôler le comportement de su avec la configuration de PAM. Si vous voulez utiliser le module pam_lastlog(8) pour afficher des messages d'avertissement sur les échecs de connexions, alors pam_lastlog(8) doit être configuré pour mettre aussi à jour le fichier lastlog. Par exemple avec :

session required pam_lastlog.so nowtmp

Cette version de la commande su est dérivée de su de coreutils, qui était basée sur une implémentation de David MacKenzie. La version util-linux a été remaniée par Karel Zak.

setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)

Pour envoyer un rapport de bogue, utilisez le système de gestion des problèmes à l'adresse https://github.com/util-linux/util-linux/issues.

La commande su fait partie du paquet util-linux qui peut être téléchargé depuis Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

La traduction française de cette page de manuel a été créée par Christophe Blaess <ccb@club-internet.fr> et bubu <bubub@no-log.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

21 février 2022 util-linux 2.38