Aller au contenu

Activité pratique : permissions à la FAAQ

La Fédération des astronomes amateurs du Québec (FAAQ) regroupe une quinzaine de clubs à travers la province. Elle veut mettre en place une plateforme Linux pour organiser ses documents — comptes rendus d’observation, calendriers, budgets, politiques internes.

Trois types d’utilisateurs doivent avoir des accès différents :

Administration (fédération)

Gère les documents officiels, les budgets, les politiques. Accès total à l’ensemble de la plateforme.

Clubs locaux

Chaque club (Montréal, Québec, Sherbrooke…) a son propre espace de travail. Les membres d’un club peuvent y écrire. Les autres clubs n’y ont pas accès.

Membres individuels

Chaque membre a un dossier personnel privé. Tous les membres peuvent consulter la zone publique de la fédération (calendrier, événements).

Ton mandat : configurer les utilisateurs, les groupes et les permissions pour que ce modèle à trois niveaux fonctionne correctement.


Exercice 1 — Modifier les permissions d’un fichier

Section intitulée « Exercice 1 — Modifier les permissions d’un fichier »

Tu vas créer un fichier et lui appliquer plusieurs permissions, en notation symbolique puis octale.

  1. Crée un fichier test_permissions.txt dans ton dossier personnel avec du contenu quelconque.

  2. Vérifie ses permissions initiales avec ls -l.

  3. Utilise la notation symbolique pour :

    • Ajouter l’exécution pour le propriétaire
    • Retirer la lecture pour les autres
    • Donner l’écriture au groupe
  4. Vérifie le résultat après chaque opération.

  5. Réinitialise ensuite le fichier à rw-r--r-- en utilisant la notation octale.

Solution
Fenêtre de terminal
# 1. Créer le fichier
echo "Test de permissions FAAQ" > ~/test_permissions.txt
# 2. Vérifier l'état initial
ls -l ~/test_permissions.txt
# -rw-r--r-- 1 toi toi 23 jan 15 10:30 test_permissions.txt
# 3a. Ajouter exécution pour le propriétaire
chmod u+x ~/test_permissions.txt
ls -l ~/test_permissions.txt
# -rwxr--r--
# 3b. Retirer la lecture pour les autres
chmod o-r ~/test_permissions.txt
ls -l ~/test_permissions.txt
# -rwxr-----
# 3c. Donner l'écriture au groupe
chmod g+w ~/test_permissions.txt
ls -l ~/test_permissions.txt
# -rwxrw----
# 5. Réinitialiser en octal
chmod 644 ~/test_permissions.txt
ls -l ~/test_permissions.txt
# -rw-r--r--

Exercice 2 — Créer les utilisateurs et les groupes

Section intitulée « Exercice 2 — Créer les utilisateurs et les groupes »

Tu dois maintenant créer les comptes pour les différents rôles de la plateforme FAAQ.

Utilisateurs à créer :

UtilisateurRôle
fed_adminAdministrateur de la fédération
aliceMembre du club de Montréal
bobMembre du club de Montréal
carolMembre du club de Québec

Groupes à créer :

GroupeContient
faaq_adminLes administrateurs de la fédération
faaq_membresTous les membres de la FAAQ
club_mtlLes membres du club de Montréal
club_qcLes membres du club de Québec

Appartenances attendues :

  • fed_adminfaaq_admin, faaq_membres
  • aliceclub_mtl, faaq_membres
  • bobclub_mtl, faaq_membres
  • carolclub_qc, faaq_membres
  1. Crée les quatre utilisateurs avec adduser. Choisis un mot de passe simple (tu en auras besoin pour su).

  2. Crée les quatre groupes avec addgroup.

  3. Ajoute chaque utilisateur à ses groupes secondaires avec usermod -aG.

  4. Vérifie les appartenances avec la commande groups <utilisateur>.

Solution
Fenêtre de terminal
# 1. Créer les utilisateurs
sudo adduser fed_admin
sudo adduser alice
sudo adduser bob
sudo adduser carol
# 2. Créer les groupes
sudo addgroup faaq_admin
sudo addgroup faaq_membres
sudo addgroup club_mtl
sudo addgroup club_qc
# 3. Ajouter aux groupes secondaires (attention au -a!)
sudo usermod -aG faaq_admin,faaq_membres fed_admin
sudo usermod -aG club_mtl,faaq_membres alice
sudo usermod -aG club_mtl,faaq_membres bob
sudo usermod -aG club_qc,faaq_membres carol
# 4. Vérifier
groups fed_admin
# fed_admin : fed_admin faaq_admin faaq_membres
groups alice
# alice : alice club_mtl faaq_membres
getent group faaq_membres
# faaq_membres:x:1005:fed_admin,alice,bob,carol
getent group club_mtl
# club_mtl:x:1006:alice,bob

Exercice 3 — Construire la structure de dossiers

Section intitulée « Exercice 3 — Construire la structure de dossiers »

Crée la hiérarchie suivante sous /faaq :

/faaq/
├── admin/ (zone administration, privée)
├── public/ (lisible par tous les membres)
├── clubs/
│ ├── montreal/ (privé au club de Montréal)
│ └── quebec/ (privé au club de Québec)
└── membres/
├── alice/
├── bob/
└── carol/
  1. Crée tous les répertoires en une seule commande avec mkdir -p.

  2. Crée quelques fichiers de démonstration dans chaque zone (par exemple /faaq/admin/budget.txt, /faaq/public/calendrier.md).

  3. Vérifie la structure avec ls -R /faaq ou tree /faaq (si tree est installé).

Solution
Fenêtre de terminal
# 1. Créer la structure complète
sudo mkdir -p /faaq/{admin,public,clubs/{montreal,quebec},membres/{alice,bob,carol}}
# 2. Ajouter du contenu de démonstration
sudo bash -c 'echo "Budget 2025 - confidentiel" > /faaq/admin/budget.txt'
sudo bash -c 'echo "Politique de confidentialité" > /faaq/admin/politique.md'
sudo bash -c 'echo "Calendrier des observations publiques" > /faaq/public/calendrier.md'
sudo bash -c 'echo "Liste des événements" > /faaq/public/evenements.md'
# 3. Vérifier
ls -R /faaq

Exercice 4 — Appliquer le modèle de permissions

Section intitulée « Exercice 4 — Appliquer le modèle de permissions »

C’est l’exercice central. Tu dois configurer les propriétaires, les groupes et les permissions de chaque répertoire pour respecter les règles d’accès.

Règles à implémenter :

CheminPropriétaireGroupeRègle d’accès
/faaqrootfaaq_membresSeuls les membres peuvent entrer
/faaq/adminfed_adminfaaq_adminAdmin uniquement, lecture + écriture pour le groupe
/faaq/publicfed_adminfaaq_membresTous les membres lisent, seul l’admin modifie
/faaq/clubsrootfaaq_membresTraversable par tous les membres
/faaq/clubs/montrealfed_adminclub_mtlSeuls les membres du club de Montréal
/faaq/clubs/quebecfed_adminclub_qcSeuls les membres du club de Québec
/faaq/membresrootfaaq_membresTraversable par tous les membres
/faaq/membres/alicealicealiceStrictement privé
/faaq/membres/bobbobbobStrictement privé
/faaq/membres/carolcarolcarolStrictement privé
  1. Utilise chown pour définir les propriétaires et groupes.

  2. Applique les permissions avec chmod (en octal).

  3. Vérifie chaque répertoire avec ls -ld.

Solution
Fenêtre de terminal
# 1. Propriétaires et groupes
sudo chown root:faaq_membres /faaq
sudo chown -R fed_admin:faaq_admin /faaq/admin
sudo chown -R fed_admin:faaq_membres /faaq/public
sudo chown root:faaq_membres /faaq/clubs
sudo chown fed_admin:club_mtl /faaq/clubs/montreal
sudo chown fed_admin:club_qc /faaq/clubs/quebec
sudo chown root:faaq_membres /faaq/membres
sudo chown alice:alice /faaq/membres/alice
sudo chown bob:bob /faaq/membres/bob
sudo chown carol:carol /faaq/membres/carol
# 2. Permissions
sudo chmod 750 /faaq # rwxr-x--- membres seulement
sudo chmod 770 /faaq/admin # rwxrwx--- admin + groupe écrivent
sudo chmod 660 /faaq/admin/* # rw-rw---- fichiers admin
sudo chmod 755 /faaq/public # rwxr-xr-x
sudo chmod 644 /faaq/public/* # rw-r--r--
sudo chmod 755 /faaq/clubs # traversable
sudo chmod 770 /faaq/clubs/montreal # rwxrwx--- club seulement
sudo chmod 770 /faaq/clubs/quebec # rwxrwx---
sudo chmod 755 /faaq/membres # traversable
sudo chmod 700 /faaq/membres/alice # privé
sudo chmod 700 /faaq/membres/bob
sudo chmod 700 /faaq/membres/carol
# 3. Vérification
ls -ld /faaq /faaq/*/ /faaq/clubs/*/ /faaq/membres/*/

Exercice 5 — Se mettre dans la peau de chaque utilisateur

Section intitulée « Exercice 5 — Se mettre dans la peau de chaque utilisateur »

Les permissions sont en place. Il faut maintenant valider qu’elles fonctionnent comme prévu. Pour chaque utilisateur, tu vas vérifier ce qu’il peut et ne peut pas faire.

Utilise su - <utilisateur> pour changer d’identité. N’oublie pas le tiret — il charge l’environnement complet.

Tests à effectuer pour chaque utilisateur :

Fenêtre de terminal
su - fed_admin
# Accès admin
cat /faaq/admin/budget.txt # ✅ doit fonctionner
echo "Note" >> /faaq/admin/notes.txt # ✅ doit fonctionner
# Accès public
cat /faaq/public/calendrier.md # ✅ doit fonctionner
echo "Nouvel événement" >> /faaq/public/evenements.md # ✅ doit fonctionner
# Accès clubs (fed_admin possède les dossiers mais n'est pas dans les groupes de club)
ls /faaq/clubs/montreal # ✅ propriétaire du dossier
echo "test" > /faaq/clubs/montreal/admin.txt # ✅
exit