Chapitre 5.3 - Permissions Avancées
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les permissions spéciales (SUID, SGID, Sticky Bit)
- Utiliser les ACL (Access Control Lists)
- Gérer les permissions de manière avancée
- Comprendre umask et permissions par défaut
Permissions Spéciales
SUID (Set User ID)
Comportement:
- Fichier exécuté avec les permissions du propriétaire
- Pas de l'utilisateur qui l'exécute
# Définir SUID
chmod u+s fichier
chmod 4755 fichier # 4 = SUID
# Voir (s au lieu de x)
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# SUID
# Exemple: /usr/bin/passwd
# Permet aux utilisateurs de modifier /etc/shadow
# (normalement accessible seulement à root)
Sécurité:
- Utiliser avec précaution
- Peut être exploité si mal configuré
SGID (Set Group ID)
Comportement:
- Fichier exécuté avec les permissions du groupe
- Sur répertoire: nouveaux fichiers héritent du groupe
# Définir SGID
chmod g+s fichier
chmod 2755 fichier # 2 = SGID
# Sur répertoire
chmod g+s repertoire/
# Nouveaux fichiers créés avec groupe du répertoire
# Voir (s au lieu de x)
ls -ld repertoire/
# drwxrwsr-x ... repertoire/
# ^
# SGID
Usage:
- Répertoires partagés
- Collaboration en équipe
Sticky Bit
Comportement:
- Sur répertoire: empêche la suppression par d'autres
- Seul le propriétaire peut supprimer ses fichiers
# Définir Sticky Bit
chmod +t repertoire/
chmod 1777 repertoire/ # 1 = Sticky Bit
# Voir (t au lieu de x)
ls -ld /tmp
# drwxrwxrwt ... /tmp
# ^
# Sticky Bit
# Exemple: /tmp
# Tous peuvent créer fichiers
# Mais ne peuvent supprimer que leurs propres fichiers
Usage:
- Répertoires partagés (/tmp)
- Prévention suppression accidentelle
ACL (Access Control Lists)
Introduction
Les ACL permettent des permissions plus fines que le système standard (owner/group/other).
# Installer outils ACL
sudo apt install acl # Ubuntu/Debian
sudo yum install acl # Red Hat/CentOS
Voir les ACL
# Voir ACL d'un fichier
getfacl fichier.txt
# Voir ACL d'un répertoire
getfacl repertoire/
# Exemple sortie:
# # file: fichier.txt
# # owner: user1
# # group: users
# user::rw-
# group::r--
# other::r--
Définir ACL
# Permettre à user2 de lire/écrire
setfacl -m u:user2:rw fichier.txt
# Permettre à un groupe
setfacl -m g:developers:rwx repertoire/
# Permettre à autres
setfacl -m o::r fichier.txt
# ACL par défaut (héritée)
setfacl -d -m u:user2:rw repertoire/
# Nouveaux fichiers hériteront de cette ACL
Supprimer ACL
# Supprimer ACL utilisateur
setfacl -x u:user2 fichier.txt
# Supprimer toutes les ACL
setfacl -b fichier.txt
Masque ACL
Le masque limite les permissions effectives:
# Définir masque
setfacl -m m::r fichier.txt
# Même si ACL donne rwx, masque limite à r
umask - Permissions par Défaut
Qu'est-ce que umask?
Le umask détermine les permissions par défaut des nouveaux fichiers et répertoires.
# Voir umask actuel
umask
# Format octal (souvent 0022 ou 0002)
Calcul des Permissions
Fichiers:
- Permissions de base: 666 (rw-rw-rw-)
- Permissions finales: 666 - umask
Répertoires:
- Permissions de base: 777 (rwxrwxrwx)
- Permissions finales: 777 - umask
Exemples
# umask 022
# Fichiers: 666 - 022 = 644 (rw-r--r--)
# Répertoires: 777 - 022 = 755 (rwxr-xr-x)
# umask 002
# Fichiers: 666 - 002 = 664 (rw-rw-r--)
# Répertoires: 777 - 002 = 775 (rwxrwxr-x)
# umask 077
# Fichiers: 666 - 077 = 600 (rw-------)
# Répertoires: 777 - 077 = 700 (rwx------)
Définir umask
# Temporaire (session)
umask 002
# Permanent (dans ~/.bashrc ou /etc/profile)
umask 002
Exemples Pratiques
Scénario 1: Répertoire Partagé
# Créer répertoire partagé
sudo mkdir /srv/shared
sudo chgrp developers /srv/shared
sudo chmod 2775 /srv/shared # SGID
# Nouveaux fichiers hériteront du groupe
Scénario 2: Permissions Fines
# Fichier avec permissions spécifiques
setfacl -m u:user1:rw fichier.txt
setfacl -m u:user2:r fichier.txt
setfacl -m g:developers:rwx fichier.txt
Scénario 3: Répertoire Collaboratif
# Répertoire où tous peuvent créer mais pas supprimer
sudo mkdir /srv/collab
sudo chmod 1777 /srv/collab # Sticky Bit + tous droits
Résumé
Dans ce chapitre, vous avez appris:
SUID: Exécution avec permissions propriétaire
SGID: Exécution avec permissions groupe, héritage groupe
Sticky Bit: Empêche suppression par autres
ACL: Permissions fines, plus flexibles que standard
umask: Permissions par défaut des nouveaux fichiers
Pratique: Combiner pour besoins spécifiques
Prochaines Étapes
Chapitre 5.4: Bonnes Pratiques
Module 6: Scripting Shell
Chapitre créé le: Décembre 2024