Lab 3.2 - Gestion des Permissions
Objectifs
À la fin de ce lab, vous serez capable de:
- Comprendre les permissions Linux (rwx)
- Modifier les permissions avec chmod
- Changer la propriété avec chown
- Comprendre les permissions spéciales (SUID, SGID, sticky bit)
- Utiliser les ACLs (Access Control Lists)
Prérequis
- Ubuntu 24.04 installé
- Terminal ouvert
- Accès utilisateur avec sudo
Exercice 1: Comprendre les Permissions
Étape 1: Voir les Permissions
# Créer des fichiers de test
mkdir ~/test-permissions
cd ~/test-permissions
touch fichier1.txt fichier2.txt fichier3.txt
mkdir dir1 dir2
# Voir les permissions
ls -l
# Format: -rw-r--r-- 1 user group 0 date fichier
# Type | Owner | Group | Others
Étape 2: Interpréter les Permissions
# Analyser chaque partie
ls -l fichier1.txt
# Exemple: -rw-r--r--
# - = fichier normal (d = répertoire, l = lien)
# rw- = owner: read, write, no execute
# r-- = group: read only
# r-- = others: read only
Exercice 2: Modifier les Permissions (chmod)
Étape 1: Mode Symbolique
# Ajouter exécution pour owner
chmod u+x fichier1.txt
# Ajouter lecture pour group
chmod g+r fichier2.txt
# Retirer écriture pour others
chmod o-w fichier3.txt
# Combinaisons
chmod u+x,g+r,o-r fichier1.txt
# Vérifier
ls -l
Étape 2: Mode Octal
# 755 = rwxr-xr-x
chmod 755 fichier1.txt
# 644 = rw-r--r--
chmod 644 fichier2.txt
# 700 = rwx------
chmod 700 fichier3.txt
# 777 = rwxrwxrwx (DANGEREUX!)
chmod 777 fichier1.txt # À éviter en production
Étape 3: Permissions Répertoires
# Répertoire exécutable = droit d'entrer
chmod 755 dir1
# Répertoire sans exécution = impossible d'entrer
chmod 644 dir1 # ❌ Ne fonctionnera pas correctement
ls -ld dir1
# Corriger
chmod 755 dir1
Exercice 3: Propriété (chown)
Étape 1: Changer le Propriétaire
# Créer un fichier
sudo touch /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# Changer le propriétaire
sudo chown $USER /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# Changer propriétaire et groupe
sudo chown $USER:$USER /tmp/fichier-root.txt
Étape 2: Changer le Groupe (chgrp)
# Voir les groupes
groups
# Changer le groupe
sudo chgrp sudo fichier1.txt
ls -l fichier1.txt
# Ou avec chown
sudo chown :sudo fichier2.txt
Exercice 4: Permissions Spéciales
Étape 1: SUID (Set User ID)
# Créer un script
cat > ~/test-suid.sh << 'EOF'
#!/bin/bash
whoami
id
EOF
chmod +x ~/test-suid.sh
# Ajouter SUID
chmod u+s ~/test-suid.sh
ls -l ~/test-suid.sh # Notez le 's' au lieu de 'x'
# Tester
./test-suid.sh
Étape 2: SGID (Set Group ID)
# Créer un répertoire partagé
mkdir ~/shared
chmod 2775 ~/shared # 2 = SGID
ls -ld ~/shared # Notez le 's' dans le groupe
# Les nouveaux fichiers hériteront du groupe
touch ~/shared/fichier.txt
ls -l ~/shared/fichier.txt
Étape 3: Sticky Bit
# /tmp utilise le sticky bit
ls -ld /tmp
# Créer un répertoire avec sticky bit
mkdir ~/sticky-dir
chmod 1777 ~/sticky-dir
ls -ld ~/sticky-dir # Notez le 't'
# Seul le propriétaire peut supprimer ses fichiers
Exercice 5: ACLs (Access Control Lists)
Étape 1: Installer les ACLs
# Vérifier si installé
which setfacl
# Installer si nécessaire
sudo apt update
sudo apt install acl
Étape 2: Utiliser les ACLs
# Créer un fichier
touch fichier-acl.txt
# Voir les ACLs actuelles
getfacl fichier-acl.txt
# Donner permission à un utilisateur spécifique
sudo setfacl -m u:autre-user:rw fichier-acl.txt
# Donner permission à un groupe
sudo setfacl -m g:developers:rx fichier-acl.txt
# Voir les ACLs
getfacl fichier-acl.txt
Étape 3: ACLs par Défaut
# Définir ACL par défaut pour un répertoire
sudo setfacl -m d:u:autre-user:rw dir1
# Les nouveaux fichiers hériteront de cette ACL
touch dir1/nouveau.txt
getfacl dir1/nouveau.txt
Exercice 6: umask
Étape 1: Comprendre umask
# Voir umask actuel
umask
# umask = permissions refusées
# 022 = refuse write pour group et others
# Donc: 666 - 022 = 644 pour fichiers
# 777 - 022 = 755 pour répertoires
Étape 2: Changer umask
# umask plus restrictif (027)
umask 027
# Créer un fichier
touch fichier-umask.txt
ls -l fichier-umask.txt # Devrait être 640
# Remettre umask par défaut
umask 022
Exercice 7: Pratique Complète
Étape 1: Scénario Réel
# Créer une structure de projet
mkdir -p ~/projet/{src,bin,docs}
touch ~/projet/src/{script1.sh,script2.sh}
touch ~/projet/docs/{readme.txt,guide.txt}
# Scripts exécutables pour owner et group
chmod 750 ~/projet/src/*.sh
# Docs en lecture seule pour tous
chmod 644 ~/projet/docs/*.txt
# Répertoire bin: exécutable pour tous
chmod 755 ~/projet/bin
# Vérifier
ls -lR ~/projet
Étape 2: Sécurisation
# Fichier sensible: lecture seule pour owner
touch ~/projet/config-secret.txt
chmod 600 ~/projet/config-secret.txt
# Script système: SUID root (avec prudence!)
sudo chown root:root ~/projet/src/script1.sh
sudo chmod 4750 ~/projet/src/script1.sh
ls -l ~/projet/src/script1.sh
Vérification
Checklist
Vérifiez que vous pouvez:
- Lire et interpréter les permissions (ls -l)
- Modifier permissions avec chmod (symbolique et octal)
- Changer propriétaire avec chown
- Changer groupe avec chgrp
- Utiliser SUID, SGID, sticky bit
- Configurer des ACLs
- Comprendre et utiliser umask
Questions de Réflexion
-
Quelle est la différence entre 755 et 644?
- 755: exécutable (pour scripts/répertoires)
- 644: lecture seule (pour fichiers normaux)
-
Quand utiliser les ACLs vs chmod?
- ACLs: permissions granulaire pour utilisateurs/groups spécifiques
- chmod: permissions standard (owner/group/others)
-
Pourquoi le sticky bit est-il important pour /tmp?
- Empêche les utilisateurs de supprimer les fichiers des autres
- Sécurité dans les répertoires partagés
Prochaines Étapes
- Lab 3.3: Recherche et Liens
- Lab 3.4: Pratique Complète
- Chapitre 3.5: Permissions Fichiers
Lab créé le: Décembre 2024 - Testé sur Ubuntu 24.04