Aller au contenu principal

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​

  1. Quelle est la différence entre 755 et 644?

    • 755: exécutable (pour scripts/répertoires)
    • 644: lecture seule (pour fichiers normaux)
  2. Quand utiliser les ACLs vs chmod?

    • ACLs: permissions granulaire pour utilisateurs/groups spécifiques
    • chmod: permissions standard (owner/group/others)
  3. 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