Manuels pour la ligne de commande

Man » Manuel su en ligne - documentation en ligne détaillée pour la page de manuel su

🌍
su - exécuter une commande avec un ID utilisateur et de groupe de substitution

SYNTAXE

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

DESCRIPTION

su permet d'exécuter des commandes avec un ID utilisateur et de groupe de substitution.

Lorsqu'elle est appelée sans utilisateur spécifié, su exécute par défaut une session interactive en tant que root. Lorsqu'un utilisateur est spécifié, des arguments supplémentaires peuvent être fournis, auquel cas ils sont transmis au shell.

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

Cette version de su utilise PAM pour l'authentification, la gestion des comptes et des sessions. Certaines options de configuration que l'on trouve dans d'autres implémentations de su, telles que la prise en charge d'un groupe « wheel », doivent être configurées via PAM.

su est principalement conçu 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 root) est d'utiliser la commande non-set-user-ID runuser(1), qui ne nécessite pas d'authentification et fournit une configuration PAM distincte. Si la session PAM n'est pas du tout nécessaire, la solution recommandée est d'utiliser la commande setpriv(1).

Notez que su utilise dans tous les cas PAM (pam_getenvlist(3)) pour effectuer la modification finale de l'environnement. Les options de ligne de commande telles que --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 ressources du processus RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS et RLIMIT_NOFILE.

OPTIONS

-c, --command commande
Transmet la commande au shell avec l'option -c.

-f, --fast
Transmet -f au shell, ce qui peut être utile ou non, selon le shell.

-g, --group groupe
Spécifie le groupe principal. Cette option est disponible uniquement pour l'utilisateur root.

-G, --supp-group groupe
Spécifie un groupe secondaire. Cette option est disponible uniquement pour l'utilisateur root. Le premier groupe secondaire spécifié est également utilisé comme groupe principal si l'option --group n'est pas spécifiée.

-, -l, --login
Démarre le shell comme un shell de connexion avec un environnement similaire à une connexion réelle.

Notez que sur les systèmes basés sur systemd, une nouvelle session peut être définie comme un point d'entrée réel vers le système. Cependant, su ne crée pas une session réelle (via PAM) de ce point de vue. Vous devez utiliser des outils comme systemd-run ou machinectl pour démarrer une session complète et réelle.

su fait ce qui suit :

efface toutes les variables d'environnement, à l'exception de TERM et des variables spécifiées par
--whitelist-environment

initialise les variables d’environnement HOME, SHELL, USER, LOGNAME et PATH.

se déplace vers le répertoire personnel de l’utilisateur cible.

définit argv[0] du shell à '-' afin de faire du shell un shell de connexion.

-m, -p, --preserve-environment
Conserve l’environnement complet, c’est-à-dire ne définit pas HOME, SHELL, USER ou LOGNAME. Cette option est ignorée si l’option --login est spécifiée.

-P, --pty
Crée un pseudo-terminal pour la session. Le terminal indépendant offre une meilleure sécurité, car l’utilisateur ne partage pas de terminal avec la session d’origine. Cela peut être utilisé pour éviter les attaques par injection de terminal TIOCSTI ioctl et autres attaques de sécurité contre les descripteurs de fichiers de terminal. L’ensemble de la session peut également être déplacé vers l’arrière-plan (par exemple, su --pty - user -c application &). Si le pseudo-terminal est activé, su fonctionne comme un proxy entre les sessions (synchronise stdin et stdout).

Cette fonctionnalité est principalement conçue pour les sessions interactives. Si l’entrée standard n’est pas un terminal, mais par exemple un pipe (par exemple, echo « date » | su --pty), le drapeau ECHO du pseudo-terminal est désactivé pour éviter une sortie désordonnée.

-s, --shell shell
Exécute le shell spécifié au lieu de celui par défaut. Si l’utilisateur cible a un shell restreint (c’est-à-dire non répertorié dans /etc/shells), l’option --shell et la variable d’environnement SHELL sont ignorées, sauf si l’utilisateur appelant est root.

Le shell à exécuter est sélectionné selon les règles suivantes, dans l’ordre :

le shell spécifié avec --shell

le shell spécifié dans la variable d’environnement SHELL, si l’option --preserve-environment est utilisée

le shell répertorié dans l’entrée passwd de l’utilisateur cible

/bin/sh

--session-command=command
Identique à -c, mais ne crée pas de nouvelle session. (Déconseillé.)

-T, --no-pty
Ne crée pas de pseudo-terminal, l’inverse de --pty et -P. Notez que l’exécution sans pseudo-terminal ouvre le risque de relèvement de privilèges par le biais de l’injection de commandes TIOCSTI/TIOCLINUX ioctl.

-w, --whitelist-environment list
Ne réinitialise pas les variables d’environnement spécifiées dans la liste séparée par des virgules lors de la suppression de l’environnement pour --login. La liste blanche est ignorée pour les variables d’environnement HOME, SHELL, USER, LOGNAME et PATH.

-h, --help
Affiche le texte d’aide et quitte.

-V, --version
Affiche la version et quitte.

SIGNALS

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

CONFIG FILES

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

FAIL_DELAY (nombre)
Délai en secondes en cas d’échec de l’authentification. Le nombre doit être un entier non négatif.

ENV_PATH (chaîne)
Définit la variable d’environnement PATH pour un utilisateur normal. La valeur par défaut est /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (chaîne de caractères), ENV_SUPATH (chaîne de caractères)
Définit la variable d’environnement PATH pour l’utilisateur root. ENV_SUPATH a la priorité. 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éfini sur oui, et que les options --login et --preserve-environment n’ont pas été spécifiées, su initialise PATH.

La variable d’environnement PATH peut être différente sur les systèmes où /bin et /sbin sont fusionnés en /usr ; cette variable est également affectée par l’option de ligne de commande --login et par les paramètres du système PAM (par exemple, pam_env(8)).

CODE DE RETOUR

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

Codes de retour générés par su lui-même :

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.

FICHIERS

/etc/pam.d/su
fichier de configuration PAM par défaut

/etc/pam.d/su-l
fichier de configuration PAM si --login est spécifié

/etc/default/su
fichier de configuration spécifique à la commande logindef

/etc/login.defs
fichier de configuration logindef global

REMARQUES

Pour des raisons de sécurité, su enregistre toujours les tentatives de connexion infructueuses dans le fichier btmp, mais il n’écrit pas du tout dans le fichier lastlog. Cette solution peut être utilisée pour contrôler le comportement de su par la configuration PAM. Si vous souhaitez utiliser le module pam_lastlog(8) pour afficher un message d’avertissement concernant les tentatives de connexion infructueuses, pam_lastlog(8) doit être configuré pour mettre à jour le fichier lastlog également. Par exemple, en utilisant :

session required pam_lastlog.so nowtmp

HISTORIQUE

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

VOIR AUSSI

setpriv(1), login.defs(5), shells(5), [pam]({filename}../../pam)(8), runuser(1)

SIGNALER LES BUGS

Pour les signalements de bugs, utilisez le système de suivi des problèmes [https://github.com/util-linux/util-linux/issues].

DISPONIBILITÉ

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