Autres langues Deutsch ; English ; Français ; Nederlands ; |
L’utilisation de la commande su
pour obtenir les privilèges de l’utilisateur root est extrêmement risquée et peut entraîner des problèmes ultérieurs qui seront difficilement résolus si vous ignorez les risques encourus.
Au lieu de cela, lorsque les privilèges root sont nécessaires, utilisez su --login
, qui peut être abrégé en su -l
, ou simplement su -
.
Pour comprendre la différence et le danger d’utiliser uniquement su
, sans le trait d’union, commencez par la page du manuel de su
. Dans cette page, l’ajout de l’option --login
rend la commande su
différente en ce sens qu’elle permet de :
- Lancer l’interpréteur de commandes en tant qu’interpréteur de connexion avec un environnement similaire à celui d’une véritable connexion :
- efface toutes les variables d’environnement à l’exception de TERM et des variables mentionnées par
--whitelist-environment
- initialise les variables d’environnement HOME, SHELL, USER, LOGNAME et PATH
- modifie le répertoire personnel de l’utilisateur cible
- met argv[0] du shell à '-' afin de faire du shell un shell de connexion
Les exemples de code suivants montrent les changements apportés aux variables d’environnement par l’utilisation de l’option --login
.
Première connexion uniquement avec su
:
[root@localhost utilisateur]# |
Résultat : Les variables d’environnement se réfèrent toujours à l’identifiant de connexion original (« utilisateur » dans le cas présent), au lieu de l’utilisateur root…
Connectez-vous maintenant avec su --login
:
[root@localhost ~]# exit |
utilisateur@localhost:~$ |
Résultat : Les variables d'environnement ont été effacées et ne font plus référence à l'identifiant d'origine (« utilisateur » dans ce cas).
Ce qui rend l'utilisation de su
sans l'option --login
dangereuse, c'est que de nombreux programmes utilisent ces variables d'environnement pour contrôler l'endroit où ils stockent les fichiers qu'ils utilisent. Si un programme qui met à jour un fichier stocké dans ~/.config
est exécuté, le fichier de configuration de ce programme dans le répertoire .config
de l'utilisateur deviendra la propriété de root.
Par la suite, après avoir quitté les droits administrateur, si l'utilisateur tente d'exécuter ce même programme et fait quelque chose qui l'amène à essayer de mettre à jour son dossier .config
, il échouera, car l'utilisateur standard ne peut pas mettre à jour les fichiers appartenant à root. Les fichiers appartenant à l'utilisateur root dans le répertoire personnel de l'utilisateur provoqueront des problèmes qui peuvent être très difficiles à résoudre.
Attention ! Pensez toujours à utiliser su -, jamais uniquement su ! |
Si l'erreur a déjà été commise, elle peut être réparée avec :
[root@localhost ~]# chown -Rc utilisateur:utilisateur /home/utilisateur |
D'autres modifications peuvent être nécessaires pour d'autres applications, c'est pourquoi il convient de vérifier attentivement la sortie de la commande chown
.