Skip to content

🔐 Exercices - Gestion des Permissions Linux

🏃‍♂️ Exercice 1 - Permissions de Base

Préparation

bash
# Créer la structure
mkdir -p projet/{src,docs,config,logs}
cd projet

# Créer les fichiers
touch src/main.py src/utils.py
touch docs/README.md docs/manuel.pdf
touch config/database.conf config/secrets.key
touch logs/app.log logs/error.log

Questions

  • 1.1 Affichez les permissions de tous les fichiers dans le répertoire projet (récursivement).
bash
ls -laR
  • 1.2 Le fichier src/main.py doit être exécutable par le propriétaire seulement. Modifiez ses permissions.
bash
chmod 700 src/main.py
  • 1.3 Les fichiers de documentation (docs/) doivent être lisibles par tous, mais modifiables seulement par le propriétaire. Appliquez ces permissions.
bash
chmod 644 docs/*
# ou
chmod -R 644 docs
  • 1.4 Le fichier config/secrets.key contient des mots de passe. Il ne doit être accessible qu'au propriétaire (lecture/écriture seulement). Configurez-le.
bash
chmod 600 config/secrets.key
  • 1.5 Les fichiers de logs doivent être accessibles en écriture par le propriétaire et le groupe, mais lisibles par tous. Appliquez ces permissions.
bash
chmod 664 logs/*
  • 1.6 Vérifiez que toutes les permissions sont correctes en utilisant ls -la.

🏢 Exercice 2 - Gestion d'une Équipe

Contexte

Vous gérez une équipe de développeurs avec différents niveaux d'accès aux fichiers du projet.

Créer les utilisateurs avec useradd

  • Aminata (aminata)
  • Nina (nina)
  • Sacha (sacha)
bash
sudo useradd -m aminata
sudo useradd -m nina
sudo useradd -m sacha

Créer un groupe developpeurs et ajouter les 3 utilisateurs

bash
sudo groupadd developpeurs
sudo usermod -aG developpeurs aminata
sudo usermod -aG developpeurs nina
sudo usermod -aG developpeurs sacha

Préparation

bash
# Créer les dossiers
mkdir -p equipe/{aminata,nina,sacha}
cd equipe

# Créer les fichiers
touch aminata/code_personnel.py
touch nina/rapport_bug.txt
touch sacha/tests.sh
touch projet_commun.md

Questions

  • 2.1 Changez le propriétaire du fichier projet_commun.md pour qu'il appartienne à aminata.
bash
sudo chown aminata projet_commun.md
  • 2.2 Assignez projet_commun.md au groupe developpeurs.
bash
sudo chgrp developpeurs projet_commun.md
  • 2.3 Le fichier sacha/tests.sh doit être exécutable. Modifiez ses permissions en utilisant la notation octale.
bash
chmod 755 sacha/tests.sh
  • 2.4 Aminata veut que son code_personnel.py soit :
    • Lecture/écriture pour elle
    • Lecture seulement pour le groupe
    • Aucun accès pour les autres
    • Utilisez la notation symbolique.
bash
chmod u=rw,g=r,o= aminata/code_personnel.py
  • 2.5 Nina souhaite que son rapport_bug.txt soit modifiable par tous les membres du groupe developpeurs mais pas par les autres utilisateurs.
bash
chmod 660 nina/rapport_bug.txt
# ou
chmod g+w,o-rwx nina/rapport_bug.txt
  • 2.6 Le répertoire equipe doit avoir le groupe developpeurs et permettre aux membres du groupe de lire et d'exécuter les fichiers, mais pas de les modifier.
bash
sudo chown :developpeurs equipe
chmod 750 equipe
# ou
chmod g+rx,o-rwx equipe

SUID, SGID et Sticky Bit

  • 2.7 Le script sacha/tests.sh doit être exécuté avec les permissions de son propriétaire, même si un autre utilisateur l'exécute. Appliquez le bit SUID.
bash
chmod u+s sacha/tests.sh
  • 2.8 Le répertoire equipe doit permettre aux membres du groupe de créer des fichiers, mais pas de supprimer les fichiers des autres membres. Appliquez le sticky bit.
bash
chmod +t equipe
  • 2.9 Ajouter le bit SGID au répertoire equipe pour que tous les fichiers créés dans ce répertoire héritent du groupe developpeurs.
bash
chmod g+s equipe

.