Dans un système d'exploitation Linux, les utilisateurs sont classés en fonction de leurs privilèges. Les utilisateurs ordinaires, comme l'utilisateur utilisateur ou user
, ne peuvent exécuter que des commandes avec les privilèges de leur compte. Les utilisateurs privilégiés, comme l'utilisateur root
, peuvent exécuter des commandes avec les privilèges de tous les utilisateurs.
Il existe plusieurs façons d'élever les privilèges d'un utilisateur. Une manière courante consiste à utiliser la commande sudo
. La commande sudo
permet à un utilisateur de lancer une commande avec les privilèges d'un autre compte, sans avoir à connaître le mot de passe de ce compte.
Deux autres commandes qui permettent d'élever les privilèges sont su
et su -
. La commande su
permet à un utilisateur de se connecter à un autre compte, tandis que la commande su -
permet à un utilisateur de se connecter à un autre compte et de démarrer un nouveau shell.
I. sudo : Superuser Do
La commande sudo
est l'option la plus sûre et la plus flexible pour l'élévation des privilèges. Elle utilise une liste de contrôle d'accès (ACL) pour déterminer quels utilisateurs sont autorisés à lancer des commandes avec les privilèges d'un autre compte.
Utilisation basique et syntaxe
La syntaxe de base de la commande sudo
est la suivante :
sudo [options] commande
Les options les plus courantes sont les suivantes :
-u
: spécifie le compte dont les privilèges doivent être utilisés.-p
: affiche le prompt de mot de passe.-s
: lance la commande dans un shell.
Configuration du fichier sudoers
La liste de contrôle d'accès qui détermine quels utilisateurs sont autorisés à utiliser la commande sudo
est stockée dans le fichier /etc/sudoers
. Ce fichier est un fichier de configuration complexe qui peut être difficile à modifier.
Exemples d'utilisation
Voici quelques exemples d'utilisation de la commande sudo
:
- Pour exécuter la commande
apt update
avec les privilèges de l'utilisateurroot
:
sudo apt update
- Pour exécuter la commande
shutdown -r now
avec les privilèges de l'utilisateurutilisateur
:
sudo -u utilisateur shutdown -r now
II. su : Substitut d'Utilisateur
La commande su
permet à un utilisateur de se connecter à un autre compte.
Présentation de su
La syntaxe de base de la commande su
est la suivante :
su [options] compte
Les options les plus courantes sont les suivantes :
-
: lance un shell de login.-s
: lance un shell avec l'environnement de l'utilisateur cible.
Différences entre su et sudo
La principale différence entre la commande sudo
et la commande su
est que sudo
utilise une ACL pour déterminer quels utilisateurs sont autorisés à lancer des commandes avec les privilèges d'un autre compte, tandis que su
exige le mot de passe du compte cible.
Utilisation de su
Pour se connecter à un autre compte avec la commande su
, il suffit de spécifier le nom du compte que vous souhaitez utiliser. Par exemple, pour se connecter au compte root
, vous pouvez utiliser la commande suivante :
su root
Gestion des droits d'accès
Les droits d'accès pour la commande su
sont définis dans le fichier /etc/passwd
. Ce fichier contient une entrée pour chaque compte utilisateur, qui comprend le nom d'utilisateur, le mot de passe (hashé), le shell par défaut et le chemin d'accès au répertoire d'accueil.
III. su - : su avec Environnement Complet
Avantages de su - par rapport à su
La commande su -
présente plusieurs avantages par rapport à la commande su
:
- Elle lance un nouveau shell, ce qui signifie que vous avez accès aux fichiers et aux commandes du compte cible dans un environnement propre.
- Elle conserve les variables d'environnement du compte cible, ce qui vous permet de travailler avec les mêmes paramètres que l'utilisateur cible.
Utilisation et exemples
Pour se connecter à un autre compte avec la commande su -
, il suffit de spécifier le nom du compte que vous souhaitez utiliser. Par exemple, pour se connecter au compte root
et démarrer un nouveau shell, vous pouvez utiliser la commande suivante :
su - root
Implications sur les variables d'environnement
Lorsque vous utilisez la commande su -
, les variables d'environnement du compte cible sont conservées. Cela signifie que vous pouvez travailler avec les mêmes paramètres que l'utilisateur cible.
Par exemple, si l'utilisateur root
a défini la variable d'environnement PATH
pour inclure le répertoire /usr/local/bin
, cette variable sera également définie pour vous lorsque vous vous connecterez au compte root
avec la commande su -
.
IV. Comparaison et Recommandations
Tableau comparatif des fonctionnalités
Voici un tableau comparatif des fonctionnalités des commandes sudo
, su
et su -
:
Caractéristique | sudo | su | su - |
---|---|---|---|
Sécurité | Plus sûr | Moins sûr | Moins sûr |
Flexibilité | Plus flexible | Moins flexible | Moins flexible |
Authentification | Utilise une ACL | Exige le mot de passe du compte cible | Exige le mot de passe du compte cible |
Résultat | Renvoie une copie du résultat de la commande | Renvoie le shell du compte cible | Renvoie un nouveau shell du compte cible |
Shell | Shell de l'utilisateur actuel | Shell de login du compte cible | Shell de login du compte cible |
Variables d'environnement | Conserve les variables d'environnement de l'utilisateur actuel | Conserve les variables d'environnement du compte cible | Conserve les variables d'environnement du compte cible |
Scénarios d'utilisation recommandés
En général, il est recommandé d'utiliser sudo
plutôt que su
. sudo
est plus sûr et plus flexible. Cependant, su
peut être utile dans certaines situations, par exemple lorsque vous devez accéder aux fichiers ou aux commandes d'un autre compte sans avoir à les connaître.
La commande su -
est recommandée lorsque vous souhaitez vous connecter à un autre compte et démarrer un nouveau shell. Cela vous permet de travailler avec les fichiers et les commandes du compte cible dans un environnement propre.
Bonnes pratiques et sécurité
Voici quelques bonnes pratiques à suivre pour utiliser les commandes sudo
, su
et su -
en toute sécurité :
- Utilisez toujours la commande
sudo
lorsque cela est possible. - N'utilisez la commande
su
que lorsque cela est nécessaire. - N'utilisez la commande
su -
que lorsque vous devez vous connecter à un autre compte et lancer un nouveau shell. - Ne partagez jamais votre mot de passe avec qui que ce soit.
V. Conclusion
Les commandes sudo
, su
et su -
permettent aux utilisateurs d'élever les privilèges d'un compte. La commande sudo
est l'option la plus sûre et la plus flexible. La commande su
peut être utile dans certaines situations, tandis que la commande su -
est recommandée lorsque vous souhaitez vous connecter à un autre compte et lancer un nouveau shell.