Aller au contenu principal

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