Objectifs
- Comprendre pourquoi il est déconseillé et dangereux de se connecter directement en tant que
root. - Utiliser
sudopour exécuter une seule commande avec des privilèges d’administrateur. - Ouvrir un shell
rootde manière temporaire lorsque plusieurs commandes administratives sont nécessaires. - Savoir où la configuration de
sudoest gérée (le fichiersudoers).
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.logou équivalent). On sait quel utilisateur a fait quoi et quand. Si tout le monde se connectait enroot, 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
sudopour 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 -iousudo -s: Ouvre un shellroot.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 commesudo echo "1.2.3.4 monsite.com" > /etc/hostsne 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 quesudon’exécute la commandeecho.- La solution : Utiliser un pipe et la commande
tee.echo "1.2.3.4 monsite.com" | sudo tee -a /etc/hosts
- La solution : Utiliser un pipe et la commande
Exercices
-
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.
- Essayez de lister le contenu du dossier
-
Shell temporaire :
- Ouvrez un shell root avec
sudo -i. - Exécutez
whoami. La sortie doit êtreroot. - Exécutez
pwd. Dans quel dossier êtes-vous ? - Quittez le shell root avec
exit. Exécutez à nouveauwhoamipour confirmer que vous êtes bien revenu à votre utilisateur normal.
- Ouvrez un shell root avec
-
Modifier un fichier protégé :
- Essayez d’afficher le fichier des mots de passe chiffrés :
cat /etc/shadow. - Utilisez
sudo cat /etc/shadowpour y parvenir. - (Ne modifiez rien, observez simplement que vous pouvez maintenant le lire).
- Essayez d’afficher le fichier des mots de passe chiffrés :