Linux Commands · 7 min read · Jan 31, 2026
Comprendre la différence entre les commandes sudo et su sur Linux

Dans l’un de nos articles précédents, nous avons discuté de la commande ‘sudo’ en détail. Vers la fin de ce tutoriel, il y avait une mention d’une autre commande similaire ‘su’ dans une petite note. Eh bien, dans cet article, nous allons discuter en détail de la commande ‘su’ ainsi que de la façon dont elle diffère de la commande ‘sudo’.
Mais avant de faire cela, veuillez noter que toutes les instructions et exemples mentionnés dans ce tutoriel ont été testés sur Ubuntu 18.04 LTS et Debian 10.
La commande su dans Linux
Le principal travail de la commande su est de vous permettre de passer à un autre utilisateur pendant une session de connexion. En d’autres termes, l’outil vous permet d’assumer l’identité d’un autre utilisateur sans avoir à vous déconnecter puis à vous reconnecter (en tant qu’utilisateur).
La commande su est principalement utilisée pour passer au compte superutilisateur/root (car les privilèges root sont souvent nécessaires lors du travail sur la ligne de commande), mais - comme déjà mentionné - vous pouvez l’utiliser pour passer à tout autre utilisateur non-root également.
Voici comment vous pouvez utiliser cette commande pour passer à l’utilisateur root :
Le mot de passe requis par cette commande est également celui de l’utilisateur root. Donc, en général, la commande su vous demande d’entrer le mot de passe de l’utilisateur cible. Après que le mot de passe correct a été saisi, l’outil démarre une sous-session à l’intérieur de la session existante sur le terminal.
su -
Il existe une autre façon de passer à l’utilisateur root : exécutez la commande ‘su -‘ :
Maintenant, quelle est la différence entre ‘su’ et ‘su -‘ ? Eh bien, la première conserve l’environnement de l’ancien utilisateur même après le passage à root, tandis que la seconde crée un nouvel environnement (comme dicté par le ~/.bashrc de l’utilisateur root), similaire au cas où vous vous connectez explicitement en tant qu’utilisateur root depuis l’écran de connexion.
IMPORTANT pour les utilisateurs de Debian 10. La variable PATH de l’utilisateur root diffère sur Debian 10 lors de l’utilisation de ‘su’ par rapport à ‘su -‘, des répertoires comme /sbin manquent lorsque seul ‘su’ est utilisé, ce qui signifie que vous pourriez obtenir des erreurs de commande non trouvée même pour des commandes d’administration système de base. Donc, utilisez toujours ‘su -‘ sur Debian 10 pour devenir utilisateur root.
La page de manuel de ‘su’ le précise également :
L'argument optionnel - peut être utilisé pour fournir un environnement similaire à ce que l'utilisateur s'attendrait s'il s'était connecté directement.Donc, vous serez d’accord que se connecter avec ‘su -‘ a plus de sens. Mais comme la commande ‘su’ existe également, on peut se demander quand cela est utile. L’extrait suivant - tiré du site wiki d’ArchLinux - donne une bonne idée des avantages et des inconvénients de la commande ‘su’ :
Il peut parfois être avantageux pour un administrateur système d’utiliser le compte shell d’un utilisateur ordinaire plutôt que le sien. En particulier, parfois, le moyen le plus efficace de résoudre le problème d’un utilisateur est de se connecter au compte de cet utilisateur afin de reproduire ou de déboguer le problème.
Cependant, dans de nombreuses situations, il n’est pas souhaitable, ou cela peut même être dangereux, que l’utilisateur root fonctionne à partir du compte shell d’un utilisateur ordinaire et avec les variables d’environnement de ce compte plutôt qu’à partir du sien. En utilisant involontairement le compte shell d’un utilisateur ordinaire, root pourrait installer un programme ou apporter d’autres modifications au système qui n’auraient pas le même résultat que s’ils avaient été effectués en utilisant le compte root. Par exemple, un programme pourrait être installé qui pourrait donner à l’utilisateur ordinaire le pouvoir de nuire accidentellement au système ou d’accéder sans autorisation à certaines données.
Note : Si vous souhaitez passer plus d’arguments après - dans ‘su -‘, vous devez utiliser l’option de ligne de commande -l que la commande propose (au lieu de -). Voici la définition de - et de l’option de ligne de commande -l :
-, -l, --login
Fournir un environnement similaire à ce que l'utilisateur s'attendrait s'il s'était connecté directement.
Lorsque - est utilisé, il doit être spécifié comme la dernière option su. Les autres formes (-l et --login) n'ont pas cette restriction.su -c
Il existe une autre option de la commande ‘su’ qui mérite d’être mentionnée : -c. Elle vous permet de fournir une commande que vous souhaitez exécuter après être passé à l’utilisateur cible.
La page de manuel de ‘su’ l’explique ainsi :
-c, --command COMMAND
Spécifiez une commande qui sera invoquée par le shell en utilisant son -c.
La commande exécutée n'aura pas de terminal de contrôle. Cette option ne peut pas être utilisée pour exécuter des programmes interactifs qui nécessitent un TTY de contrôle.Considérez le modèle d’exemple suivant :
su [utilisateur-cible] -c [commande-à-exécuter]Donc, dans ce cas, la ‘commande-à-exécuter’ sera exécutée comme :
[shell] -c [commande-à-exécuter]Où ‘shell’ serait remplacé par le shell de ‘utilisateur-cible’ défini dans le /etc/passwd.
Sudo vs Su
Maintenant que nous avons discuté des bases de la commande ‘su’, il est temps de discuter des différences entre les commandes ‘sudo’ et ‘su’.
Mot de passe
La principale différence entre les deux est le mot de passe qu’elles nécessitent : tandis que ‘sudo’ nécessite le mot de passe de l’utilisateur actuel, ‘su’ nécessite que vous entriez le mot de passe de l’utilisateur root.
Il est clair que ‘sudo’ est une meilleure alternative entre les deux en ce qui concerne la sécurité. Par exemple, considérons le cas d’un ordinateur utilisé par plusieurs utilisateurs qui nécessitent également un accès root. Utiliser ‘su’ dans un tel scénario signifie partager le mot de passe root avec tous, ce qui n’est généralement pas une bonne pratique.
De plus, si vous souhaitez révoquer l’accès superutilisateur/root d’un utilisateur particulier, le seul moyen est de changer le mot de passe root et ensuite de redistribuer le nouveau mot de passe root parmi tous les autres utilisateurs.
Avec Sudo, en revanche, vous pouvez gérer ces deux scénarios sans effort. Étant donné que ‘sudo’ nécessite que les utilisateurs entrent leur propre mot de passe, vous n’avez pas besoin de partager le mot de passe root avec tous les utilisateurs en premier lieu. Et pour empêcher un utilisateur particulier d’accéder aux privilèges root, il vous suffit de modifier l’entrée correspondante dans le fichier ‘sudoers’.
Comportement par défaut
L’autre différence entre les deux commandes réside dans leur comportement par défaut. Alors que ‘sudo’ ne vous permet d’exécuter qu’une seule commande avec des privilèges élevés, la commande ‘su’ lance un nouveau shell, vous permettant d’exécuter autant de commandes que vous le souhaitez avec des privilèges root jusqu’à ce que vous quittiez explicitement ce shell.
Ainsi, le comportement par défaut de la commande ‘su’ est potentiellement dangereux étant donné la possibilité que l’utilisateur puisse oublier qu’il travaille en tant que root et pourrait involontairement apporter des modifications irréversibles (comme exécuter la commande ‘rm -rf’ dans le mauvais répertoire). Pour une discussion détaillée sur pourquoi il n’est pas recommandé de toujours travailler en tant que root, rendez-vous ici.
Journalisation
Bien que les commandes exécutées via ‘sudo’ soient exécutées en tant qu’utilisateur cible (qui est ‘root’ par défaut), elles sont étiquetées avec le nom d’utilisateur du sudoer. Mais dans le cas de ‘su’, il n’est pas possible de tracer directement ce qu’un utilisateur a fait après qu’il soit passé au compte root.
Flexibilité
La commande ‘sudo’ est beaucoup plus flexible en ce sens que vous pouvez même limiter les commandes auxquelles vous souhaitez que les sudoers aient accès. En d’autres termes, les utilisateurs ayant accès à ‘sudo’ peuvent uniquement se voir accorder l’accès aux commandes nécessaires pour leur travail. Cependant, avec ‘su’, cela n’est pas possible - soit vous avez le privilège de tout faire, soit rien.
Sudo su
Probablement en raison des risques potentiels liés à l’utilisation de ‘su’ ou à la connexion directe en tant que root, certaines distributions Linux - comme Ubuntu - désactivent le compte utilisateur root par défaut. Les utilisateurs sont encouragés à utiliser ‘sudo’ chaque fois qu’ils ont besoin de privilèges root.
Cependant, vous pouvez toujours faire ‘su’ avec succès, c’est-à-dire sans entrer le mot de passe root. Tout ce que vous avez à faire est d’exécuter la commande suivante :
sudo suPuisque vous exécutez la commande avec ‘sudo’, vous ne serez requis qu’à entrer votre mot de passe. Une fois cela fait, la commande ‘su’ sera exécutée en tant que root, ce qui signifie qu’elle ne demandera aucun mot de passe.
PS : Si vous souhaitez activer le compte root sur votre système (bien que cela soit fortement déconseillé car vous pouvez toujours utiliser ‘sudo’ ou ‘sudo su’), vous devrez définir le mot de passe root manuellement, ce que vous pouvez faire en utilisant la commande suivante :
sudo passwd rootConclusion
Cet article ainsi que notre tutoriel précédent (qui se concentre sur ‘sudo’) devraient vous donner une bonne idée des outils disponibles qui vous permettent d’effectuer des tâches nécessitant des privilèges élevés (ou un ensemble complètement différent de privilèges). Si vous avez quelque chose à partager sur ‘su’ ou ‘sudo’, ou si vous souhaitez partager votre propre expérience, vous êtes le bienvenu pour le faire dans les commentaires ci-dessous.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.