Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 16

Exécuter des commandes avec sudo

Recommended resources

Bonjour ! Dans la leçon précédente, nous avons vu comment définir qui a le droit de lire, modifier ou exécuter des fichiers et des dossiers avec chmod et chown. Vous avez sûrement remarqué que pour changer le propriétaire d'un fichier avec chown, nous avons dû utiliser la commande sudo, que j'avais présentée comme un "joker" pour obtenir des privilèges administratifs.

Aujourd'hui, nous allons lever le voile sur ce joker. Cette leçon est entièrement dédiée à la commande sudo. L'objectif est de vous apprendre à exécuter des commandes avec des privilèges administratifs de manière sécurisée et contrôlée.

Comprendre sudo n'est pas un détail, c'est le cœur du métier d'administrateur système. C'est ce qui sépare un utilisateur standard d'un administrateur, et sa bonne utilisation est un pilier de la sécurité et de la traçabilité dans les environnements d'entreprise.

1. Pourquoi a-t-on besoin de sudo ? Le super-utilisateur root

Sur tout système Linux, il existe un compte utilisateur qui a tous les droits, absolument tous. Il peut tout lire, tout modifier, tout supprimer. C'est le super-utilisateur, et son nom est root. On peut le voir comme le "dieu" de la machine.

Pendant des années, pour administrer un serveur, la pratique était de se connecter directement en tant que root avec la commande su (substitute user). Cependant, cette méthode pose deux problèmes majeurs :

  1. Sécurité : Si plusieurs administrateurs doivent gérer le serveur, ils doivent tous connaître le mot de passe root. Plus de personnes connaissent un secret, moins il reste secret.
  2. Traçabilité : Quand tout le monde utilise le même compte root, il est impossible de savoir qui a fait quoi. Si une erreur critique est commise, on ne peut pas identifier le responsable. C'est inacceptable dans un environnement professionnel qui suit des pratiques comme ITIL.

C'est pour résoudre ces problèmes qu'a été inventée la commande sudo ("Substitute User DO").

Comprendre sudo, su et su – : différences cruciales sous Linux

Pour bien saisir la philosophie derrière sudo, je vous propose de lire l'introduction de cet article qui explique parfaitement pourquoi sudo est une approche plus moderne et sécurisée que l'ancienne méthode su.

Lisez les deux premières sections de l'article : "Comprendre les commandes..." et "Comment fonctionnent les commandes d’élévation de privilèges sous Linux". Concentrez-vous sur la section "La traçabilité et l’audit" qui est essentielle.

Pour résumer, sudo offre trois avantages fondamentaux :

  • Délégation de privilèges : Un utilisateur exécute une commande en tant que root sans avoir à se connecter en tant que root.
  • Authentification individuelle : Pour utiliser sudo, l'utilisateur tape son propre mot de passe, pas celui de root. Le mot de passe root peut ainsi rester inconnu de la plupart des administrateurs.
  • Audit et traçabilité : Chaque commande exécutée avec sudo est enregistrée dans les journaux du système (/var/log/auth.log). On sait précisément qui a fait quoi, et quand.

2. Utiliser sudo au quotidien

La façon la plus simple d'utiliser sudo est de préfixer la commande qui nécessite des droits élevés.

Par exemple, dans la leçon précédente, pour changer le propriétaire d'un dossier, nous avons utilisé :
sudo chown pdupont:developpeurs /srv/projet_alpha

Lorsque vous exécutez cette commande pour la première fois dans une session de terminal, le système vous demandera [sudo] password for votre_nom:. Il faut alors entrer votre propre mot de passe. Une fois authentifié, vous pourrez utiliser sudo pendant quelques minutes (15 par défaut sur Ubuntu) sans avoir à retaper votre mot de passe.

Donner les droits sudo à un utilisateur

Par défaut, un utilisateur standard n'a pas le droit d'utiliser sudo. Pour qu'il puisse le faire, la méthode la plus courante sur les systèmes comme Ubuntu ou Debian est de l'ajouter au groupe spécial sudo.

Mise en pratique :

  1. Dans votre VM Ubuntu, nous allons donner les droits sudo à l'utilisateur pdupont que nous avons créé précédemment.

    sudo usermod -aG sudo pdupont
    
    • usermod : la commande pour modifier un utilisateur.
    • -a : append, pour ajouter l'utilisateur à un groupe sans le retirer des autres.
    • -G : spécifie le(s) groupe(s), ici sudo.
  2. Pour que le changement de groupe soit pris en compte, l'utilisateur pdupont doit se déconnecter et se reconnecter. Pour notre simulation, nous allons simplement basculer sur son compte :

    su - pdupont
    

    Entrez le mot de passe de pdupont.

  3. Vérifions maintenant que pdupont est bien dans le groupe sudo :

    groups
    

    Vous devriez voir sudo dans la liste des groupes.

  4. Le test final ! Essayons d'exécuter une commande qui ne peut être faite que par root, comme voir qui nous sommes du point de vue du système.

    sudo whoami
    

    Le système va vous demander le mot de passe de pdupont. Entrez-le. Si tout s'est bien passé, la commande devrait retourner root. C'est la preuve que pdupont a réussi à exécuter la commande whoami avec les privilèges du super-utilisateur.

Adding a User to the Sudo Group and Verifying Privileges
Cette image illustre parfaitement les étapes que nous venons de réaliser : ajouter un utilisateur (`anusha` dans l'exemple) au groupe `sudo` avec `usermod`, puis vérifier ses nouveaux privilèges avec `sudo whoami`, qui renvoie `root`.

Une astuce bien pratique : sudo !!

Il nous arrive à tous d'oublier de mettre sudo devant une commande. On tape une longue commande, on appuie sur Entrée et... Permission denied. Frustrant !
Plutôt que de tout retaper, vous pouvez utiliser la commande magique :

sudo !!

Les deux points d'exclamation !! sont un raccourci dans le shell qui représente la dernière commande exécutée. sudo !! va donc ré-exécuter votre dernière commande, mais en la préfixant avec sudo.


3. Contrôler les permissions : le fichier sudoers

Ajouter un utilisateur au groupe sudo lui donne un pouvoir total sur la machine. C'est parfait pour votre propre ordinateur ou pour un administrateur système principal, mais dans une grande entreprise, on applique le principe du moindre privilège : chaque utilisateur ne doit avoir que les droits strictement nécessaires à sa mission.

C'est là que réside la vraie puissance de sudo : sa capacité à accorder des permissions très spécifiques. La configuration se trouve dans le fichier /etc/sudoers.

Attention : N'éditez JAMAIS ce fichier directement avec nano ou un autre éditeur. Une seule erreur de syntaxe pourrait vous empêcher d'utiliser sudo à nouveau, et vous bloquer hors de votre propre système.

La seule et unique commande à utiliser pour modifier ce fichier est visudo.

sudo visudo

visudo ouvre le fichier /etc/sudoers dans un éditeur de texte (nano par défaut sur Ubuntu). Son grand avantage est qu'au moment d'enregistrer, il vérifie la syntaxe du fichier. S'il détecte une erreur, il vous préviendra et vous proposera d'annuler les modifications, vous évitant ainsi de vous enfermer dehors.

Comment bien utiliser sudo #1 ⭐️ [Admin débutant]

Cette vidéo vous explique très bien le concept de root et de sudo. Regardez surtout la fin où l'auteur introduit le fichier sudoers et la commande visudo pour commencer à personnaliser les droits.

Regardez le début de la vidéo de 00:00 à 03:12 pour un rappel sur le pourquoi de sudo. Ensuite, sautez à la partie sur la configuration de 08:00 à 11:48, qui montre l'utilisation de visudo pour accorder un droit spécifique.

Comprendre une règle sudoers

Dans le fichier ouvert avec visudo, trouvez la ligne concernant le groupe sudo :
%sudo ALL=(ALL:ALL) ALL

Décortiquons-la :

  • %sudo : Le % indique qu'il s'agit d'un groupe. Cette règle s'applique à tous les membres du groupe sudo.
  • ALL= : La règle s'applique depuis n'importe quel terminal/machine (hôte).
  • (ALL:ALL) : Les membres peuvent exécuter des commandes en se faisant passer pour n'importe quel utilisateur (premier ALL) et n'importe quel groupe (deuxième ALL).
  • ALL : Le dernier ALL est le plus important : il spécifie la liste des commandes autorisées. ALL signifie... toutes les commandes.

Créer une règle spécifique

Imaginons que vous ayez un technicien de support, sdupont, qui doit pouvoir redémarrer le serveur web Apache, mais rien d'autre. Vous n'allez pas lui donner tous les droits sudo. Vous allez plutôt ajouter une règle spécifique pour lui dans sudoers avec visudo.

  1. Trouvez le chemin complet de la commande :

    which systemctl
    

    La commande renverra quelque chose comme /usr/bin/systemctl. Il est crucial d'utiliser les chemins complets dans sudoers pour des raisons de sécurité.

  2. Ajoutez la ligne suivante à la fin du fichier /etc/sudoers via sudo visudo:

    sdupont   ALL=/usr/bin/systemctl restart apache2
    

    Cette règle dit : l'utilisateur sdupont, depuis n'importe quelle machine (ALL), peut exécuter la commande /usr/bin/systemctl restart apache2.

Cette approche granulaire est la clé d'une administration système professionnelle et sécurisée.

Sudo sous Linux : guide complet d'utilisation et de configuration

Pour une synthèse écrite complète et des exemples variés sur la configuration de sudo, je vous recommande cet article très détaillé. Il couvre tout ce que nous avons vu et va même un peu plus loin.

Lisez les sections "Comment utiliser sudo ?", "Configuration du fichier /etc/sudoers" et "Créer une nouvelle règle dans sudoers". Cela renforcera votre compréhension pratique de la commande et de sa configuration.


Conclusion

Aujourd'hui, vous avez appris bien plus qu'une simple commande. Vous avez découvert un concept fondamental de l'administration Linux.

Points clés à retenir :

  • Le compte root a un pouvoir absolu, ce qui le rend dangereux pour une utilisation quotidienne.
  • sudo est la méthode moderne et sécurisée pour exécuter des tâches administratives. Il garantit la sécurité (chacun son mot de passe) et la traçabilité (tout est journalisé).
  • Le moyen le plus simple d'accorder des droits d'administrateur complets est d'ajouter un utilisateur au groupe sudo avec sudo usermod -aG sudo <utilisateur>.
  • Pour un contrôle fin des permissions (le principe du moindre privilège), on édite le fichier /etc/sudoers uniquement avec la commande visudo pour y ajouter des règles spécifiques.

Dans les leçons précédentes, nous avons créé des utilisateurs et géré leurs droits sur les fichiers. Aujourd'hui, nous leur avons donné le pouvoir d'administrer le système.

Dans la prochaine leçon, nous mettrons immédiatement ce nouveau super-pouvoir en pratique. Nous utiliserons sudo pour l'une des tâches les plus courantes d'un administrateur : la gestion des logiciels. Vous apprendrez à installer, mettre à jour et supprimer des paquets avec le gestionnaire apt.