sudo, su, su – : À quoi servent ces commandes sous Linux ? Quelles sont les différences ?
Sommaire
I. Présentation
Sous Linux, l’exécution d’une commande avec des privilèges élevés passe par l’utilisation de la commande . Néanmoins, il n’est pas rare d’avoir recours à d’autres commandes, notamment évoquées dans certains de nos tutoriels : et . À quoi servent ces commandes ? Qu’est-ce qui les différencient ? C’est ce que nous allons dans cet article.
, , et : bien que ces commandes permettent toutes d’exécuter des tâches avec des droits administratifs, elles diffèrent dans leur fonctionnement et leur utilisation. La commande est utilisée pour exécuter des commandes avec les privilèges d’un autre utilisateur, généralement l’utilisateur . Pour utiliser , l’utilisateur doit être autorisé grâce à une règle définie dans le fichier de configuration .
Pour en savoir plus sur et éviter de faire doublon, veuillez lire cet article :
II. Linux : la commande su
A. Définition
La commande dont le nom signifie Substitute User permet de basculer vers un autre utilisateur, par défaut l’utilisateur root. Contrairement à , la commande ne demande pas le mot de passe de l’utilisateur courant, mais celui de l’utilisateur cible (donc celui du super-utilisateur).
Ce n’est pas la seule différence entre et ! En effet, lors de l’utilisation de la commande , vous basculez dans la session de puisque vous changez d’utilisateur. À l’inverse, avec la commande , il s’agit d’une délégation de droits qui doit être autorisée via le fichier , tandis que n’a pas besoin de cette délégation. Il suffit de connaitre le mot de passe de l’utilisateur .
B. Exemple d’utilisation
Pour basculer vers l’utilisateur , l’utilisateur actuellement connecté sur la machine Linux peut utiliser simplement cette commande :
Il sera alors invité à entrer le mot de passe de l’utilisateur . S’il ne le connait pas, la demande sera refusée.
III. Linux : la commande su –
A. Définition et utilisation
La commande quant à elle, est une variante de , qui permet de basculer vers un autre utilisateur tout en chargeant son environnement. Cela signifie que toutes les variables d’environnement et configurations de l’utilisateur cible seront appliquées. Cette phrase veut donc dire que ce n’est pas le cas lors de l’utilisation de ? Vous avez tout compris…
Lors de l’utilisation de , vous basculez dans la session de , mais sans charger complètement l’environnement. Il n’y a pas les variables d’environnement, ni son profil. Tandis qu’avec , vous chargez l’environnement dans son intégralité.
Vous pouvez aussi basculer dans la session d’un utilisateur spécifique, ici :
B. La différence entre su et su – par la pratique
Il y a un moyen très simple de s’en rendre compte : vous afficher le répertoire courant, juste après avoir exécuté l’une ou l’autre de ces deux commandes, vous verrez qu’il y a bien une différence.

Pour illustrer d’une autre façon la différence entre et , considérons un exemple impliquant l’utilisation d’une variable.
Supposons que l’utilisateur a une variable d’environnement personnalisée définie dans son fichier . Nous pourrions ajouter cette ligne pour déclarer la variable .
Cette variable est chargée uniquement lorsque se connecte avec une session de connexion complète (environnement complet). Désormais, passons aux tests…
Lorsque l’utilisateur utilise pour basculer vers :
Il devient root mais conserve l’environnement de . Si essaie d’accéder à la variable :
La commande ne retournera rien ! C’est normal puisque n’est pas définie dans l’environnement de … Désormais, testons la seconde méthode.
En revanche, si l’utilisateur utilise la commande pour basculer vers :
Il devient et charge l’environnement complet du super-utilisateur. Donc, maintenant, nous pouvons accéder à la variable :
La commande retournera :
Cela montre et prouve que a chargé l’environnement complet de , y compris les variables d’environnement définies dans ses fichiers de configuration. Vous pouvez constater la différence sur l’image ci-dessous :

En complément, il est intéressant de noter que lorsque vous utilisez , vous basculez dans un Terminal interactif en tant que , et que vous avez accès à l’environnement complet. Ainsi, dans notre cas, la variable est accessible.
Note : la principale différence réside dans l’authentification. La commande permet de suivre et de contrôler l’accès root via les politiques de , en utilisant le mot de passe du compte à l’origine de l’exécution de la commande. De son côté, est plus direct, mais nécessite de connaître le mot de passe de l’utilisateur cible.
IV. N’utilisez pas la commande sudo su
Au sein de certaines documentations, vous avez peut-être déjà rencontré la commande . Pourtant, cette commande n’a pas d’intérêt puisque la commande en elle-même propose déjà des arguments permettant de reproduire son comportement. L’utilisation de est une pratique courante, mais souvent déconseillée.
Commençons par analyser la constitution de la commande , car c’est une combinaison de deux commandes. permet d’exécuter une commande avec les privilèges d’un autre utilisateur (généralement root), tandis que permet de basculer vers un autre utilisateur.
Donc, concrètement, lorsque vous exécutez , vous utilisez d’abord pour obtenir les privilèges nécessaires pour exécuter , qui à son tour vous donne un shell root.
A. Pourquoi est-ce déconseillé ?
Avec , chaque commande exécutée est enregistrée dans les journaux, ce qui permet un suivi précis des actions réalisées avec des privilèges élevés. Il y a donc un intérêt vis-à-vis de la traçabilité. Lorsque vous utilisez , seule l’exécution de est loguée par , et non les commandes exécutées dans le shell qui en découle.
De plus, sur une machine Linux, l’administrateur peut utiliser pour n’autoriser qu’un ensemble restreint de commandes pour un utilisateur donné, renforçant ainsi la sécurité. En passant à un shell complet , l’utilisateur contourne cette limitation et obtient un accès sans restrictions.
B. Alternatives recommandées
Plutôt que d’utiliser cette commande, il est recommandé de faire usage des options natives de la commande , à savoir :
- : pour obtenir un shell root avec l’environnement de root chargé (variables, profil, etc.), en tant qu’alternative à .
- : pour obtenir un shell root tout en conservant l’environnement de l’utilisateur actuel, en tant qu’alternative à .
IV. Conclusion
En lisant cet article, vous devriez mieux comprendre les différences entre , , et sous Linux. Cela vous permettra également d’utiliser la bonne commande, selon le contexte et vos besoins.
Vous devez retenir ce qui suit :
- La commande permet d’exécuter une commande en tant qu’un autre utilisateur, en général .
- Lorsque vous utilisez pour basculer vers l’utilisateur , vous conservez l’environnement de l’utilisateur actuel.
- Lorsque vous utilisez pour basculer vers l’utilisateur , vous chargez l’environnement complet de l’utilisateur .
- Les commandes et sont des alternatives recommandées à l’utilisation et .