Retour au cours

sudo : exécuter des commandes en tant que root

Objectifs

  • Comprendre pourquoi il est déconseillé et dangereux de se connecter directement en tant que root.
  • Utiliser sudo pour exécuter une seule commande avec des privilèges d’administrateur.
  • Ouvrir un shell root de manière temporaire lorsque plusieurs commandes administratives sont nécessaires.
  • Savoir où la configuration de sudo est gérée (le fichier sudoers).

Le danger de l’utilisateur root

L’utilisateur root est l’super-administrateur du système. Il a tous les pouvoirs : il peut lire, modifier et supprimer n’importe quel fichier, sans aucune restriction.

Ce pouvoir est aussi un grand danger. En étant connecté en tant que root, une simple faute de frappe peut avoir des conséquences désastreuses et irréversibles. rm -rf / mon_dossier (avec une espace en trop) pourrait commencer à effacer la racine de votre système.

Pour cette raison, la bonne pratique est de ne jamais se connecter directement en tant que root. On utilise un compte utilisateur normal, et on élève ses privilèges uniquement lorsque c’est nécessaire. C’est le rôle de sudo.

sudo : Le bon usage des privilèges

sudo (abréviation de “superuser do” ou “substitute user do”) est une commande qui permet à un utilisateur autorisé d’exécuter une commande en tant qu’un autre utilisateur, qui par défaut est root.

Avantages de sudo

  • Traçabilité : Lorsqu’une commande est exécutée avec sudo, l’action est journalisée (/var/log/auth.log ou équivalent). On sait quel utilisateur a fait quoi et quand. Si tout le monde se connectait en root, ce serait impossible à savoir.
  • Sécurité : Les privilèges ne sont accordés que pour la durée d’une seule commande. Vous ne restez pas avec les pleins pouvoirs en permanence.
  • Contrôle d’accès fin : Il est possible de configurer sudo pour n’autoriser que certaines commandes spécifiques à certains utilisateurs.

Utilisation de base

Pour exécuter une commande qui nécessite des droits d’admin (comme installer un logiciel ou modifier un fichier dans /etc), on la préfixe simplement avec sudo.

# Essayer d'installer un paquet -> Échoue
apt update

# Réessayer avec sudo -> Réussit
sudo apt update

# La première fois, sudo vous demandera VOTRE mot de passe, pas celui de root.
# Le mot de passe est ensuite mis en cache pour quelques minutes.

Ouvrir un shell root

Si vous devez enchaîner de nombreuses commandes administratives, il peut être fastidieux de taper sudo à chaque fois. Vous pouvez ouvrir un shell interactif en tant que root.

  • sudo -i ou sudo -s : Ouvre un shell root.
  • sudo su - : Une autre manière courante de faire la même chose.

Vous remarquerez que votre prompt de commande change, se terminant souvent par un # pour vous rappeler que vous êtes root. Pour revenir à votre utilisateur normal, il suffit de taper exit.

La configuration : le fichier sudoers

Qui a le droit d’utiliser sudo ? Cette configuration est définie dans le fichier /etc/sudoers.

  • ATTENTION : N’éditez jamais ce fichier directement avec un éditeur de texte. Une erreur de syntaxe pourrait vous empêcher d’utiliser sudo à nouveau, vous bloquant hors de votre propre système.
  • On utilise toujours la commande visudo. Elle ouvre un éditeur de texte, mais avant de sauvegarder, elle vérifie que la syntaxe est correcte.

Sur la plupart des systèmes modernes (comme Ubuntu), les utilisateurs autorisés à utiliser sudo font partie du groupe sudo ou wheel.

Pièges courants

  • Redirections et sudo : Une commande comme sudo echo "1.2.3.4 monsite.com" > /etc/hosts ne fonctionnera pas comme prévu. La redirection (>) est gérée par votre shell (qui n’a pas le droit d’écrire dans /etc/hosts), avant que sudo n’exécute la commande echo.
    • La solution : Utiliser un pipe et la commande tee.
      echo "1.2.3.4 monsite.com" | sudo tee -a /etc/hosts

Exercices

  1. Tester les limites :

    • Essayez de lister le contenu du dossier /root (ls -l /root). Vous devriez obtenir une erreur “Permission denied”.
    • Maintenant, exécutez sudo ls -l /root. La commande devrait réussir.
  2. Shell temporaire :

    • Ouvrez un shell root avec sudo -i.
    • Exécutez whoami. La sortie doit être root.
    • Exécutez pwd. Dans quel dossier êtes-vous ?
    • Quittez le shell root avec exit. Exécutez à nouveau whoami pour confirmer que vous êtes bien revenu à votre utilisateur normal.
  3. Modifier un fichier protégé :

    • Essayez d’afficher le fichier des mots de passe chiffrés : cat /etc/shadow.
    • Utilisez sudo cat /etc/shadow pour y parvenir.
    • (Ne modifiez rien, observez simplement que vous pouvez maintenant le lire).