Soluce Exercice Librairie
Exercice interactif : Système de gestion d’une Librairie
Section intitulée « Exercice interactif : Système de gestion d’une Librairie »🎭 Mise en situation
Section intitulée « 🎭 Mise en situation »Félicitations ! Vous venez d’être embauché(e) comme administrateur système d’une librairie numérique innovante. Votre mission : mettre en place un système de permissions sécurisé pour gérer les différents acteurs de la librairie.
Votre équipe :
- Alice, Bob, Charlie : lecteurs passionnés qui adorent découvrir de nouveaux livres
- Victor Hugo, Jules Verne, George Sand : auteurs prestigieux qui travaillent sur leurs manuscrits
- Le bibliothécaire et le gestionnaire : ils s’occupent de la gestion quotidienne
Phase 1 : Préparation du système
Section intitulée « Phase 1 : Préparation du système »🤔 Question de réflexion 1
Section intitulée « 🤔 Question de réflexion 1 »Avant de commencer, réfléchissez : Dans une vraie librairie, qui devrait avoir accès à quoi ? Listez 3 règles de sécurité importantes selon vous.
Votre réponse :
1. ________________________________2. ________________________________3. ________________________________Étape 1.1 : Création des groupes
Section intitulée « Étape 1.1 : Création des groupes »# Créer les trois groupes principauxsudo groupadd lecteurssudo groupadd auteurssudo groupadd libraires
# Vérifier la créationgetent group | grep -E "(lecteurs|auteurs|libraires)"✅ Checkpoint 1
Section intitulée « ✅ Checkpoint 1 »Question : Que fait la commande getent group ? Pourquoi utilise-t-on grep après ?
💡 Cliquez pour voir la réponse
getent group affiche tous les groupes du système. grep -E filtre uniquement les lignes contenant “lecteurs”, “auteurs” ou “libraires” pour vérifier que nos groupes ont bien été créés.
Étape 1.2 : Création des utilisateurs
Section intitulée « Étape 1.2 : Création des utilisateurs »🎯 Mission : Créer les lecteurs
Section intitulée « 🎯 Mission : Créer les lecteurs »sudo useradd -m -s /bin/bash -G lecteurs alicesudo useradd -m -s /bin/bash -G lecteurs bobsudo useradd -m -s /bin/bash -G lecteurs charlie
# Définir les mots de passesudo passwd alicesudo passwd bobsudo passwd charlie🤔 Question pratique 2
Section intitulée « 🤔 Question pratique 2 »Regardez la commande useradd. Que signifient les options -m, -s /bin/bash, et -G lecteurs ?
💡 Voir la réponse
-m: crée le répertoire home de l’utilisateur-s /bin/bash: définit bash comme shell par défaut-G lecteurs: ajoute l’utilisateur au groupe “lecteurs”
🎯 Mission : Créer les auteurs (avec une particularité)
Section intitulée « 🎯 Mission : Créer les auteurs (avec une particularité) »sudo useradd -m -s /bin/bash -G auteurs,lecteurs victor_hugosudo useradd -m -s /bin/bash -G auteurs,lecteurs jules_vernesudo useradd -m -s /bin/bash -G auteurs,lecteurs george_sand
# Mots de passesudo passwd victor_hugosudo passwd jules_vernesudo passwd george_sand🤔 Question de logique 3
Section intitulée « 🤔 Question de logique 3 »Pourquoi les auteurs sont-ils AUSSI dans le groupe “lecteurs” ? Donnez 2 raisons pratiques.
Votre réponse :
Raison 1: ________________________________Raison 2: ________________________________💡 Voir la réponse suggérée
- Les auteurs ont besoin de consulter le catalogue pour voir les autres livres
- Ils doivent pouvoir lire les œuvres de leurs collègues pour s’inspirer ou collaborer
🎯 Mission : Créer les libraires (super-utilisateurs)
Section intitulée « 🎯 Mission : Créer les libraires (super-utilisateurs) »sudo useradd -m -s /bin/bash -G libraires,auteurs,lecteurs bibliothecairesudo useradd -m -s /bin/bash -G libraires,auteurs,lecteurs gestionnaire
# Mots de passesudo passwd bibliothecairesudo passwd gestionnaire✅ Checkpoint 2 - Test de vérification
Section intitulée « ✅ Checkpoint 2 - Test de vérification »Exercice pratique : Vérifiez que victor_hugo appartient bien à tous ses groupes :
groups victor_hugoid victor_hugoQuestion : Combien de groupes devez-vous voir ? Lesquels ?
Étape 1.3 : Structure des dossiers
Section intitulée « Étape 1.3 : Structure des dossiers »🏗️ Mini-défi
Section intitulée « 🏗️ Mini-défi »Essayez de créer la structure suivante SANS regarder la solution. Utilisez la syntaxe avec les accolades {} :
librairie/├── catalogue/│ ├── romans/│ ├── poesie/│ └── theatre/├── auteurs/│ ├── victor_hugo/│ ├── jules_verne/│ └── george_sand/└── administration/ ├── rapports/ └── gestion/Votre tentative :
# Écrivez votre commande ici :💡 Solution
mkdir -p librairie/{catalogue,auteurs,administration}mkdir -p librairie/catalogue/{romans,poesie,theatre}mkdir -p librairie/auteurs/{victor_hugo,jules_verne,george_sand}mkdir -p librairie/administration/{rapports,gestion}Phase 2 : Configuration des permissions de base
Section intitulée « Phase 2 : Configuration des permissions de base »🤔 Question théorique 4
Section intitulée « 🤔 Question théorique 4 »Avant de configurer, réfléchissez : quelle devrait être la permission numérique (ex: 755) pour :
- Un dossier personnel d’auteur ?
- Le dossier administration ?
- Le catalogue public ?
Vos prédictions :
Dossier auteur: _____ (justification: _________________)Administration: _____ (justification: _________________)Catalogue: _____ (justification: ___________________)Étape 2.1 : Propriétés des dossiers principaux
Section intitulée « Étape 2.1 : Propriétés des dossiers principaux »# Dossier racine librairiesudo chown root:libraires librairiesudo chmod 755 librairie🤔 Question d’analyse 5
Section intitulée « 🤔 Question d’analyse 5 »Analysez la ligne sudo chown root:libraires librairie. Qui devient propriétaire ? Qui devient groupe propriétaire ? Pourquoi ce choix ?
📚 Continuons la configuration
Section intitulée « 📚 Continuons la configuration »# Catalogue (lecture publique)sudo chown root:lecteurs librairie/cataloguesudo chmod 755 librairie/catalogue
# Dossiers auteurs (spécifiques à chaque auteur)sudo chown victor_hugo:auteurs librairie/auteurs/victor_hugosudo chown jules_verne:auteurs librairie/auteurs/jules_vernesudo chown george_sand:auteurs librairie/auteurs/george_sandsudo chmod 750 librairie/auteurs/*✅ Checkpoint 3 - Décryptage
Section intitulée « ✅ Checkpoint 3 - Décryptage »Exercice : Décryptez chmod 750 pour un dossier d’auteur :
- Propriétaire (l’auteur) peut : ________________
- Groupe (auteurs) peut : ____________________
- Autres peuvent : ___________________________
🎭 Simulation réaliste
Section intitulée « 🎭 Simulation réaliste »Imaginez : Victor Hugo veut créer un nouveau chapitre dans son dossier, tandis que Jules Verne souhaite juste consulter le travail de Victor. Avec les permissions actuelles (750), que peut faire chacun ?
# Administration (libraires seulement)sudo chown root:libraires librairie/administrationsudo chmod 770 librairie/administration🤔 Question de sécurité 6
Section intitulée « 🤔 Question de sécurité 6 »Pourquoi 770 pour l’administration et non 755 ? Quel est le risque avec 755 ?
Phase 3 : Création du contenu
Section intitulée « Phase 3 : Création du contenu »🎨 Activité créative
Section intitulée « 🎨 Activité créative »Nous allons créer du contenu pour tester nos permissions. Vous allez jouer le rôle d’un libraire et remplir le catalogue !
Étape 3.1 : Livres dans le catalogue
Section intitulée « Étape 3.1 : Livres dans le catalogue »# Romans - Créons Les Misérablessudo tee librairie/catalogue/romans/les_miserables.txt << 'EOF'Les Misérables - Victor HugoTome I : Fantine
Tant qu'il existera, par le fait des lois et des mœurs,une damnation sociale créant artificiellement, en pleine civilisation,des enfers, et compliquant d'une fatalité humaine la destinée qui est divine...EOF🎯 Mini-mission 1
Section intitulée « 🎯 Mini-mission 1 »À vous ! Créez le fichier “Vingt mille lieues sous les mers” dans le dossier romans. Inventez un petit extrait du chapitre 1.
Votre commande :
# Écrivez votre commande tee ici :🎭 Continuons avec le théâtre et la poésie
Section intitulée « 🎭 Continuons avec le théâtre et la poésie »# Théâtresudo tee librairie/catalogue/theatre/hernani.txt << 'EOF'Hernani - Victor HugoActe I, Scène I
Serait-ce déjà lui ? C'est bien à l'escalierDérobé... Vite, ouvrons !EOF
# Poésiesudo tee librairie/catalogue/poesie/contemplations.txt << 'EOF'Les Contemplations - Victor Hugo
Elle était déchaussée, elle était décoiffée,Assise, les pieds nus, parmi les joncs penchants...EOFÉtape 3.2 : Manuscrits des auteurs
Section intitulée « Étape 3.2 : Manuscrits des auteurs »🎯 Mission d’infiltration
Section intitulée « 🎯 Mission d’infiltration »Maintenant, incarnez Victor Hugo ! Connectez-vous en tant que lui et créez son manuscrit personnel.
# Devenez Victor Hugosu - victor_hugo
# Créez votre œuvre en courstee librairie/auteurs/victor_hugo/nouveau_roman.txt << 'EOF'Nouveau projet de roman - BrouillonTitre provisoire : "L'Homme qui rit"
Notes d'écriture :- Personnage principal : Gwynplaine- Époque : Angleterre, fin XVIIe siècleEOF
# Revenez à votre session normaleexit🤔 Question pratique 7
Section intitulée « 🤔 Question pratique 7 »Que remarquez-vous de différent entre la commande pour Victor Hugo et celles d’avant ? Pourquoi ne met-on plus sudo ?
💡 Suggestion de réponse
- On s’est connecté en tant que Victor Hugo avec su - victor_hugo
- On opère maintenant depuis son compte, pas depuis le compte administrateur
- Victor Hugo a les droits nécessaires dans son propre dossier
🎯 Mission collaborative
Section intitulée « 🎯 Mission collaborative »Créez maintenant les manuscrits des autres auteurs. Attention : chacun doit créer SON fichier dans SON dossier !
💡 Commandes pour Jules Verne
sudo -u jules_verne tee librairie/auteurs/jules_verne/projet_scientifique.txt << 'EOF'Nouveau projet - Roman d'aventures scientifiquesTitre : "De la Terre à la Lune"
Concept : Voyage spatial grâce à un canon géantLieu : Baltimore, États-UnisEOFPhase 4 : Permissions avancées avec ACL
Section intitulée « Phase 4 : Permissions avancées avec ACL »🎓 Cours express ACL
Section intitulée « 🎓 Cours express ACL »Les permissions Unix classiques (rwx pour user/group/other) ne suffisent plus ! Nous avons 3 groupes différents qui ont besoin de permissions spécifiques sur les mêmes fichiers.
🤔 Question de réflexion 8
Section intitulée « 🤔 Question de réflexion 8 »Avec les permissions Unix classiques seulement, quel problème rencontrerait-on pour donner :
- Lecture seule aux lecteurs sur le catalogue
- Lecture seule aux auteurs sur le catalogue
- Accès total aux libraires sur le catalogue
Indice : pensez au fait qu’il n’y a qu’UN seul “groupe propriétaire” possible…
Étape 4.1 : Catalogue (lecture pour tous, gestion pour libraires)
Section intitulée « Étape 4.1 : Catalogue (lecture pour tous, gestion pour libraires) »# Tous les groupes peuvent lire le catalogue, mais seuls les libraires modifientsudo setfacl -R -m g:lecteurs:r-x librairie/cataloguesudo setfacl -R -m g:auteurs:r-x librairie/cataloguesudo setfacl -R -m g:libraires:rwx librairie/catalogue✅ Checkpoint 4 - Décryptage ACL
Section intitulée « ✅ Checkpoint 4 - Décryptage ACL »Exercice : Que signifie setfacl -R -m g:lecteurs:r-x ?
setfacl: ___________________________-R: ________________________________-m: ________________________________g:lecteurs:r-x: ____________________
Réponse
🔧 Décomposition complète- setfacl : Set File Access Control Lists = Définir/modifier les listes de contrôle d’accès (permissions étendues)
- R : Récursif = Appliquer la commande à tous les sous-dossiers et fichiers contenus dans le répertoire cible
- m : Modify = Modifier/ajouter une règle ACL sans supprimer les permissions existantes
- g:lecteurs:r-x :
- g: = concerne un groupe (group)
- lecteurs = nom du groupe cible
- r-x = permissions accordées :
- r = read (lecture)
- = pas de write (écriture interdite)
- x = execute (exécution/navigation pour dossiers)
🔍 Investigation
Section intitulée « 🔍 Investigation »Vérifiez l’effet de vos ACL :
ls -la librairie/catalogue/romans/# Que remarquez-vous après "les_miserables.txt" ?
getfacl librairie/catalogue/romans/les_miserables.txt# Combien de lignes group: voyez-vous ?🎯 Mission importante : Permissions par défaut
Section intitulée « 🎯 Mission importante : Permissions par défaut »# Pour que les NOUVEAUX fichiers héritent automatiquement des bonnes permissionssudo setfacl -d -m g:lecteurs:r-x librairie/cataloguesudo setfacl -d -m g:auteurs:r-x librairie/cataloguesudo setfacl -d -m g:libraires:rwx librairie/catalogue🤔 Question pratique 9
Section intitulée « 🤔 Question pratique 9 »Quelle est la différence entre setfacl -m et setfacl -d -m ? Pourquoi a-t-on besoin des deux ?
Réponse
🔧 Fonctionnement de chaque commande
- setfacl -m : Applique les ACL aux fichiers et dossiers EXISTANTS uniquement
- setfacl -d -m : Définit les ACL par DÉFAUT pour les NOUVEAUX fichiers/dossiers qui seront créés dans ce dossier
Étape 4.2 : Dossiers auteurs (accès restreint et personnel)
Section intitulée « Étape 4.2 : Dossiers auteurs (accès restreint et personnel) »# Victor Hugo : accès total à son dossier, lecture pour collègues auteurs, interdit aux lecteurssudo setfacl -R -m u:victor_hugo:rwx librairie/auteurs/victor_hugosudo setfacl -R -m g:libraires:rwx librairie/auteurs/victor_hugosudo setfacl -R -m g:auteurs:r-x librairie/auteurs/victor_hugosudo setfacl -R -m g:lecteurs:--- librairie/auteurs/victor_hugo🎭 Scénario de test
Section intitulée « 🎭 Scénario de test »Imaginez cette situation : Alice (lectrice) tente d’espionner le manuscrit de Victor Hugo, tandis que Jules Verne (auteur) veut juste s’inspirer de son travail. Que va-t-il se passer ?
Prédiction pour Alice : _________________________ Prédiction pour Jules Verne : ___________________
🎯 Mission répétitive intelligente
Section intitulée « 🎯 Mission répétitive intelligente »Au lieu de réécrire 3 fois les mêmes commandes, utilisez une boucle !
# Boucle pour tous les auteursfor auteur in jules_verne george_sand; do sudo setfacl -R -m u:$auteur:rwx librairie/auteurs/$auteur sudo setfacl -R -m g:libraires:rwx librairie/auteurs/$auteur sudo setfacl -R -m g:auteurs:r-x librairie/auteurs/$auteur sudo setfacl -R -m g:lecteurs:--- librairie/auteurs/$auteurdone
# Bloquer l'accès au dossier parent pour les lecteurssudo setfacl -m g:lecteurs:--- librairie/auteursÉtape 4.3 : Administration (zone ultra-secrète)
Section intitulée « Étape 4.3 : Administration (zone ultra-secrète) »sudo setfacl -R -m g:libraires:rwx librairie/administrationsudo setfacl -R -m g:auteurs:--- librairie/administrationsudo setfacl -R -m g:lecteurs:--- librairie/administrationPhase 5 : Tests et validation (La phase fun !)
Section intitulée « Phase 5 : Tests et validation (La phase fun !) »🎮 Jeu de rôle : Testez vos permissions !
Section intitulée « 🎮 Jeu de rôle : Testez vos permissions ! »Test 1 : Alice la lectrice curieuse
Section intitulée « Test 1 : Alice la lectrice curieuse »# Devenez Alicesu - alice
# Mission d'Alice : Explorer la librairieecho "=== Je suis Alice, une lectrice passionnée ==="cd librairie/catalogue # Essai 1echo "✅ J'accède au catalogue !"
ls romans/ # Essai 2echo "✅ Je vois la liste des romans !"
cat romans/les_miserables.txt # Essai 3echo "✅ Je peux lire Les Misérables !"
# Maintenant Alice devient curieuse...echo "=== Voyons ce que font les auteurs... ==="cd ../auteurs # Essai 4 - Que va-t-il se passer ?🤔 Question prédictive 10
Section intitulée « 🤔 Question prédictive 10 »Avant d’exécuter le test d’Alice, que pensez-vous qu’il va se passer à l’étape “Essai 4” ? Pourquoi ?
Votre prédiction : ______________________________
🎭 Continuons le test d’Alice
Section intitulée « 🎭 Continuons le test d’Alice »# Alice essaie de tricher...echo "test" > ../catalogue/romans/alice_etait_la.txt # Essai 5ls ../administration # Essai 6
# Retour au mode normalexitTest 2 : Victor Hugo, l’auteur créatif
Section intitulée « Test 2 : Victor Hugo, l’auteur créatif »# Devenez Victor Hugosu - victor_hugo
echo "=== Je suis Victor Hugo, auteur prestigieux ==="cd librairie/auteurs/victor_hugo # Navigation dans son royaumeecho "✅ J'accède à mon atelier d'écriture !"
echo "Nouveau chapitre génial !" >> nouveau_roman.txt # Écriture créativeecho "✅ J'enrichis mon œuvre !"
# Victor veut voir le travail de ses collèguescd ../jules_verne # Visite chez un collèguecat projet_scientifique.txt # Lecture du travail d'autruiecho "✅ Je m'inspire du travail de Jules !"
# Victor essaie d'être vilain...echo "Victor était là" > sabotage.txt # Tentative de sabotage🤔 Question d’observation 11
Section intitulée « 🤔 Question d’observation 11 »Qu’est-ce qui devrait empêcher Victor de créer le fichier “sabotage.txt” chez Jules Verne ?
Votre analyse :
Mécanisme de protection : _______________________Permission manquante : __________________________Principe de sécurité appliqué : __________________💡 Analyse de sécurité
Mécanisme de protection : ACL sur le dossier /librairie/auteurs/jules_verne
Permission manquante : Permission d’écriture (w) sur le dossier de Jules Verne
- Victor a
g:auteurs:r-x(lecture + navigation) mais PASw(écriture) - Pour créer un fichier, il faut la permission
wsur le dossier parent
Principe de sécurité appliqué :
- Propriété exclusive : Chaque auteur contrôle totalement son espace de travail
- Collaboration en lecture seule : Les auteurs peuvent s’inspirer mutuellement sans risque de sabotage
- Séparation des responsabilités : Consultation ≠ Modification
Résultat : Message “Permission denied” quand Victor essaie de créer sabotage.txt
Test 3 : Le bibliothécaire tout-puissant
Section intitulée « Test 3 : Le bibliothécaire tout-puissant »# Devenez le bibliothécairesu - bibliothecaire
echo "=== Je suis le bibliothécaire, maître de la librairie ==="cd librairie/administrationecho "Rapport mensuel - Janvier 2025" > rapports/janvier.txtecho "✅ Je gère l'administration !"
echo "Nouveau livre ajouté au catalogue" > catalogue/romans/acquisition.txtecho "✅ J'enrichis le catalogue !"
cd auteurs/victor_hugoecho "Note de l'éditeur" >> nouveau_roman.txtecho "✅ Je supervise le travail des auteurs !"
exit🚀 Extensions pour aller plus loin
Section intitulée « 🚀 Extensions pour aller plus loin »🌟 Niveau Expert : Intégrations avancées
Section intitulée « 🌟 Niveau Expert : Intégrations avancées »- Ajouter des quotas de stockage par auteur avec
setquota - Configurer des logs d’audit avec
auditdpour tracer les accès - Intégrer avec un serveur web Apache pour publier le catalogue
- Mettre en place des sauvegardes automatiques avec conservation des ACL
🔒 Niveau Sécurité : Durcissement
Section intitulée « 🔒 Niveau Sécurité : Durcissement »- Implémenter SELinux ou AppArmor pour un contrôle d’accès obligatoire
- Configurer des sessions temporaires pour les comptes auteurs
- Ajouter une authentification à deux facteurs
- Mettre en place un chiffrement des manuscrits sensibles
📊 Niveau Architecture : Évolutivité
Section intitulée « 📊 Niveau Architecture : Évolutivité »- Concevoir une structure pour 1000+ auteurs avec sous-groupes par genre
- Intégrer avec un annuaire LDAP pour la gestion centralisée
- Automatiser avec Ansible ou Puppet pour le déploiement multi-serveurs
- Monitoring avec Nagios pour surveiller les permissions
Bravo ! Vous maîtrisez maintenant les permissions Linux comme un vrai administrateur système ! 🎉