Introduction
Sous Linux, la gestion des permissions des utilisateurs et du contrôle d’accès est un aspect fondamental de l’administration système et de la sécurité. La commande sudo, abréviation de « superuser do », permet aux utilisateurs autorisés d’exécuter des commandes avec des privilèges élevés, généralement ceux du superutilisateur ou du compte root.
Ce laboratoire vous guide dans l’attribution et la restriction des privilèges des utilisateurs dans un environnement Linux. Vous apprendrez à ajouter des utilisateurs au groupe sudo pour leur permettre d’effectuer des tâches d’administration, et à limiter leurs permissions à certaines commandes. Ces compétences sont essentielles pour maintenir la sécurité d’un système où l’accès aux opérations sensibles doit être rigoureusement contrôlé.
Gestion des utilisateurs et bases de sudo
Dans cette étape, vous découvrirez la gestion des utilisateurs sous Linux et les bases de la commande sudo. Vous créerez un nouvel utilisateur et apprendrez à lui accorder des privilèges d’administration.
Qu’est-ce que sudo ?
La commande sudo permet aux utilisateurs autorisés d’exécuter des commandes avec les privilèges d’un autre utilisateur, généralement ceux du superutilisateur (root). Elle permet d’effectuer des tâches d’administration sans se connecter en tant que root, ce qui constitue une bonne pratique de sécurité.
Créer un nouvel utilisateur
Commencez par créer un nouveau compte utilisateur. Ouvrez un terminal et exécutez la commande suivante :
sudo adduser trusted_advisor
Vous devrez saisir un mot de passe et quelques informations facultatives pour le nouvel utilisateur. Pour ce laboratoire, vous pouvez choisir un mot de passe simple comme password123 et laisser les autres champs vides en appuyant sur Entrée.
La sortie devrait ressembler à ceci :
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Vérifier les informations de l’utilisateur
Pour vérifier que l’utilisateur a bien été créé, consultez le contenu du fichier /etc/passwd :
grep trusted_advisor /etc/passwd
La commande doit afficher une ligne contenant les informations de l’utilisateur.
Accorder des privilèges sudo
Pour accorder des privilèges sudo à un utilisateur, ajoutez-le au groupe sudo. Sous Ubuntu, les membres de ce groupe peuvent utiliser la commande sudo. Exécutez la commande suivante :
sudo usermod -aG sudo trusted_advisor
Cette commande ajoute (-a) l’utilisateur trusted_advisor au groupe sudo (-G sudo). L’utilisateur peut alors exécuter des commandes avec des privilèges d’administration.
Vérifier l’accès sudo
Pour vérifier que le nouvel utilisateur dispose d’un accès sudo, basculez vers son compte et essayez de lister le contenu du répertoire /root, normalement accessible uniquement à l’utilisateur root :
su - trusted_advisor
À l’invite, saisissez le mot de passe que vous avez défini pour cet utilisateur. Exécutez ensuite :
sudo ls /root
Vous devrez saisir à nouveau le mot de passe, car il s’agit de la première utilisation de sudo. Une fois le mot de passe saisi, le contenu du répertoire /root devrait s’afficher. Cela confirme que l’utilisateur dispose de privilèges sudo.
Enfin, quittez la session de l’utilisateur trusted_advisor pour revenir à votre utilisateur initial :
exit
Restreindre l’accès sudo avec le fichier sudoers
Dans cette étape, vous apprendrez à limiter les privilèges sudo d’un utilisateur à certaines commandes à l’aide du fichier sudoers. Cette méthode applique le principe du moindre privilège : chaque utilisateur ne doit disposer que des privilèges minimum nécessaires à ses tâches.
Comprendre le fichier sudoers
Le fichier /etc/sudoers détermine qui peut utiliser la commande sudo et quelles commandes ces utilisateurs peuvent exécuter. Ne modifiez jamais ce fichier directement avec un éditeur de texte classique : une erreur de syntaxe pourrait vous empêcher d’accéder au système. Utilisez toujours la commande visudo, qui vérifie la syntaxe avant d’enregistrer les modifications.
Supprimer l’accès général accordé par le groupe
Les permissions sudo issues de toutes les règles correspondantes se cumulent. Ajouter une règle limitée à certaines commandes ne supprime pas l’accès complet accordé par le groupe sudo. Depuis votre session labex initiale, supprimez d’abord cet accès général :
sudo deluser trusted_advisor sudo
Pour tester les nouveaux groupes, ouvrez une nouvelle session avec su - trusted_advisor afin que l’utilisateur bénéficie de son appartenance mise à jour aux groupes.
Modifier le fichier sudoers
Pour modifier le fichier sudoers en toute sécurité, utilisez la commande visudo :
sudo EDITOR=vim visudo
Cette commande ouvre explicitement Vim ; les touches de modification et d’enregistrement indiquées ci-dessous correspondent donc à cet éditeur. Appuyez sur G pour aller à la dernière ligne, puis sur o pour créer une nouvelle ligne et passer en mode insertion.
Comprendre la syntaxe de sudoers
Voici la syntaxe de base d’une entrée sudo dans le fichier sudoers :
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Les éléments sont les suivants :
user_or_group: l’utilisateur ou le groupe auquel cette règle s’appliquehost: le nom d’hôte auquel cette règle s’applique (généralementALL)run_as_user: l’utilisateur au nom duquel les commandes seront exécutées (rootpour n’autoriser queroot, ouALLpour n’importe quel utilisateur)run_as_group: le groupe au nom duquel les commandes seront exécutées (cet élément peut être omis)NOPASSWD: balise facultative qui permet d’exécuter les commandes sans saisir de mot de passecommands: les commandes précises qui peuvent être exécutées avec sudo
Accorder un accès sudo restreint
Faites défiler le fichier jusqu’à la fin et ajoutez la ligne suivante pour permettre à trusted_advisor d’exécuter uniquement les commandes cp et mv, sans mot de passe :
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Ajoutez également cette ligne séparée pour activer un journal sudo dédié dans ce conteneur, qui ne fournit pas de fichier /var/log/auth.log :
Defaults logfile="/var/log/sudo.log"
Appuyez sur Esc, saisissez :wq, puis appuyez sur Entrée pour enregistrer et quitter Vim. Si visudo signale une erreur de syntaxe, appuyez sur e pour revenir à l’édition et la corriger. Pour abandonner les modifications dans Vim, appuyez sur Esc, saisissez :q!, puis appuyez sur Entrée.
Cet exercice porte uniquement sur la correspondance des commandes : un accès root sans restriction aux commandes cp ou mv peut écraser des fichiers sensibles. Ce n’est pas une restriction sûre pour un système en production.
Tester l’accès sudo restreint
Testons maintenant si l’accès sudo restreint fonctionne comme prévu. Revenez d’abord à l’espace de travail du laboratoire et créez un fichier de test :
cd /home/labex/project
echo "This is a test file" > important_file.txt
Basculez ensuite vers l’utilisateur trusted_advisor :
su - trusted_advisor
Saisissez le mot de passe à l’invite.
Essayez de copier le fichier dans le répertoire root. Cette opération devrait être autorisée :
sudo cp /home/labex/project/important_file.txt /root/
La commande devrait réussir sans demander de mot de passe.
Essayez ensuite d’exécuter une commande qui ne figure pas dans la liste autorisée, comme cat :
sudo -n cat /root/important_file.txt
La commande doit échouer, car cat n’est pas autorisée. L’option -n empêche l’affichage d’une demande de mot de passe ; le message de refus peut indiquer qu’un mot de passe est nécessaire ou que la commande n’est pas autorisée. Le contenu du fichier ne doit pas s’afficher.
Quittez la session de l’utilisateur restreint avant de vérifier la copie, car ls ne figure pas non plus parmi les commandes autorisées :
exit
En tant que labex, vérifiez que le fichier a bien été copié :
sudo ls /root/
La sortie doit contenir important_file.txt.
Supprimer le fichier de test
Pour nettoyer, supprimez le fichier de test :
sudo rm /home/labex/project/important_file.txt /root/important_file.txt
Journaux sudo et considérations de sécurité
Dans cette étape, vous découvrirez la journalisation de sudo et les bonnes pratiques de sécurité. Surveiller l’utilisation de sudo est important pour la sécurité et les audits.
Journalisation de sudo
Lorsque les utilisateurs exécutent des commandes avec sudo, ces actions sont consignées. Ces journaux constituent une piste d’audit utile pour surveiller la sécurité et résoudre des problèmes.
Les installations Ubuntu dotées d’un service de journalisation système utilisent souvent le fichier /var/log/auth.log. Dans ce conteneur, utilisez plutôt le journal dédié configuré à l’étape 2. En tant que labex, examinez les dernières activités sudo :
sudo tail -n 10 /var/log/sudo.log
Cette commande affiche les 10 dernières entrées du journal liées à sudo. La sortie doit inclure des horodatages, des noms d’utilisateur et les commandes exécutées avec sudo.
Bonnes pratiques de sécurité pour sudo
Voici quelques bonnes pratiques pour gérer les privilèges sudo :
Principe du moindre privilège : les utilisateurs ne doivent disposer que des privilèges minimum nécessaires à leurs tâches.
Utiliser des commandes précises : au lieu d’accorder un accès sudo complet, indiquez précisément les commandes qu’un utilisateur peut exécuter.
Exiger un mot de passe : pour les opérations sensibles, assurez-vous que les utilisateurs doivent saisir leur mot de passe lorsqu’ils utilisent sudo.
Effectuer des audits réguliers : consultez périodiquement les journaux sudo et le fichier sudoers pour vérifier que la configuration est correcte.
Supprimer les accès inutiles : dès qu’un utilisateur n’a plus besoin de privilèges élevés, retirez-le rapidement du groupe sudo.
Supprimer l’accès sudo
À l’étape 2, vous avez déjà retiré trusted_advisor du groupe sudo. Pour révoquer l’accès restant, limité à certaines commandes, supprimez également sa règle :
sudo EDITOR=vim visudo
Appuyez sur Esc, saisissez /^trusted_advisor, puis appuyez sur Entrée pour rechercher la règle. Appuyez sur dd pour supprimer toute la ligne :
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Conservez la ligne Defaults logfile. Saisissez :wq, puis appuyez sur Entrée pour enregistrer et quitter. Vérifiez l’appartenance aux groupes :
groups trusted_advisor
La sortie ne doit pas contenir sudo.
Vérifier la révocation de l’accès sudo
Vérifions que l’utilisateur ne peut plus exécuter de commandes avec sudo :
su - trusted_advisor
Saisissez le mot de passe à l’invite.
Essayez d’exécuter une commande avec sudo :
sudo -n ls /root
Vous devriez maintenant voir le message trusted_advisor is not in the sudoers file. La commande doit échouer.
Quittez la session de l’utilisateur trusted_advisor :
exit
Rétablir l’accès sudo
Pour les besoins de ce laboratoire, ajoutons à nouveau l’utilisateur au groupe sudo :
sudo usermod -aG sudo trusted_advisor
Vérifiez que l’utilisateur fait de nouveau partie du groupe sudo :
groups trusted_advisor
La sortie doit maintenant contenir « sudo » dans la liste des groupes.
Résumé
Dans ce laboratoire, vous avez découvert des techniques essentielles de gestion des utilisateurs et de contrôle des privilèges sous Linux. Vous avez mis en pratique les notions et opérations suivantes :
Créer des utilisateurs : vous avez appris à créer de nouveaux comptes utilisateur avec la commande
adduser.Accorder des privilèges sudo : vous avez découvert comment accorder des droits d’administration en ajoutant des utilisateurs au groupe sudo.
Restreindre l’accès sudo : vous avez appliqué le principe du moindre privilège en limitant l’accès sudo d’un utilisateur à certaines commandes à l’aide du fichier sudoers.
Journalisation et surveillance de sudo : vous avez étudié la consignation des activités sudo et l’importance de surveiller ces journaux pour garantir la sécurité.
Gérer l’accès sudo : vous avez appris à accorder et à retirer des privilèges sudo aux utilisateurs selon les besoins.
Ces compétences sont fondamentales pour l’administration système et la sécurité sous Linux. En gérant correctement les privilèges des utilisateurs, vous pouvez maintenir un système sécurisé, où chacun accède aux ressources dont il a besoin sans compromettre l’intégrité ni la sécurité du système.



