Ubuntu : Différences entre sudo, su et su -

linux sudo vs su

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'utilisateur root :
sudo apt update
  • Pour exécuter la commande shutdown -r now avec les privilèges de l'utilisateur utilisateur :
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éristiquesudosusu -
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.