Aller au contenu

ACL - Access Control List et cie

·
redhat
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops
RH134 - Cet article fait partie d'une série.
Partie 32: Cet article

ACL Access Control List
#

Les ACL permettent fournir des mécanismes de permission sur les systèmes de fichier de façon plus avancée.

Par exemple donner des accès spécifique à un utilisateur sur un fichier pour lequel il n’est pas propriétaire, ni membre du groupe concerné. C’est là que l'Access Control Lists (ACL) rentre en jeux.

Commande pour assigner ou supprimer des permissions ACL:

  • setfacl et getfacl

Liste de commande:
#

1- Ajout de permission à un utilisateur:

setfacl -m u:user:rwx /path/to/file

2- Ajout de permission à un groupe:

setfacl -m g:group:rw /path/to/file

3- Ajout de permission de façon récurcive:

setfacl -Rm u:user:rwx /path/to/dir

4- Supprimer une entrée ACL spécifique à un utilsiateur pour un fichier

setfacl -x u:user /path/to/file

4- Supprimer toute les entrées ACL pour un fichier

setfacl -b /path/to/file

Détail commande
#

$: setfacl --help                                                                                                                                                                               127 ✘ 
setfacl 2.3.1 -- définir les listes de contrôle d'accès des fichiers
Utilisation : setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
  -m, --modify=acl           modifier le(s) ACL(s) actuel(s) de fichier(s)
  -M, --modify-file=fichier  lire les entrées d’ACL à modifier du fichier
  -x, --remove=acl           supprimer les entrées d’ACL(s) de(s)s fichier(s)
  -X, --remove-file=fichier  lire les entrées d’ACL à supprimer du fichier
  -b, --remove-all           supprimer toutes les entrées d’ACL étendues
  -k, --remove-default       supprimer l'ACL par défaut
      --set=acl           définir l'ACL de(s) fichier(s) en remplaçant l'ACL
                          actuel
      --set-file=fichier  lire les entrées d’ACL à modifier du fichier
      --mask              recalculer les masques des droits en vigueur
  -n, --no-mask           ne pas recalculer les masques de droits en                           vigueur
  -d, --default           les opérations s'appliquent à l'ACL par défaut
  -R, --recursive         parcourir récursivement les sous-répertoires
  -L, --logical           suivre les liens symboliques
  -P, --physical          ne pas suivre les liens symboliques
      --restore=fichier   restaurer les ACL (inverse de « getfacl -R »)
      --test              mode test (les ACL ne sont pas modifiées)
  -v, --version           afficher la version et quitter
  -h, --help              afficher ce message d'aide
  • Un signe + est ajouté en fin de permission pour préciser que un (ou plusieurs) droit au ficheir est appliqué.
  • Ajouté un droit d’écriture ‘write’ ne permet pas de supprimer le fichier.

SGID sur un fichier
#

Le SGID a un rôle plus courant et pratique sur les répertoires. Quand il est appliqué à un répertoire, il fait en sorte que tous les fichiers créés à l’intérieur de ce répertoire héritent du groupe propriétaire du répertoire plutôt que du groupe propriétaire de l’utilisateur qui les crée.

Activer le SGID
#

  • Pour appliquer le SGID sur un fichier ou répertoire, vous utilisez la commande chmod avec un bit spécial :
    • Pour un fichier : chmod g+s fichier
    • Pour un répertoire : chmod g+s repertoire

Visualiser le SGID
#

Quand le SGID est activé sur un fichier, cela se manifeste par un s dans les permissions du groupe, comme ceci :

rwxr-sr-x

Sur un répertoire, le s dans la partie des permissions du groupe indique que le SGID est activé :

drwxrwsr-x

Exemples d’utilisation
#

  • Fichiers exécutables : Un script ou programme exécutable utilisé par plusieurs utilisateurs dans une organisation qui nécessite que tous les utilisateurs l’exécutent avec les permissions du groupe propriétaire du fichier.

  • Répertoires partagés : Dans un environnement où plusieurs utilisateurs travaillent sur un projet commun et partagent des fichiers, le SGID permet à tous les fichiers créés dans le répertoire de conserver un groupe commun, facilitant ainsi la collaboration.

Sticky bit :
#

Le sticky bit est utilisé principalement sur les répertoires partagés pour contrôler qui peut supprimer ou renommer les fichiers. Lorsque le sticky bit est activé sur un répertoire, seul le propriétaire du fichier ou le superutilisateur (root) peut supprimer ou renommer les fichiers à l’intérieur de ce répertoire, même si d’autres utilisateurs ont les permissions d’écriture sur le répertoire.

  • C’est particulièrement utile pour des répertoires comme /tmp, où plusieurs utilisateurs peuvent créer des fichiers, mais où chaque utilisateur ne peut supprimer que ses propres fichiers.

Activer le sticky bit
#

Pour ajouter le sticky bit à un répertoire, utilisez la commande chmod avec l’option +t :

chmod +t mon_repertoire

Visualisation du sticky bit
#

Comme mentionné plus haut, quand le sticky bit est activé sur un répertoire, les permissions du répertoire contiennent un t :

drwxrwxrwt

Exemple d’utilisation
#

Si le sticky bit est activé sur un répertoire comme /tmp, les permissions du répertoire apparaîtront avec un t à la fin des permissions d’exécution, comme ceci :

drwxrwxrwt    /tmp

Tableau récapitulatif
#

Attribut / Bit Spécial Description Effet sur Fichiers Effet sur Répertoires Commande pour Ajouter Commande pour Vérifier
Sticky Bit Empêche les utilisateurs autres que le propriétaire de supprimer ou renommer des fichiers qu’ils n’ont pas créés. Sans effet Seul le propriétaire du fichier ou root peut supprimer/renommer les fichiers dans le répertoire. chmod +t <répertoire> ls -ld <répertoire> (affiche t à la fin des permissions si actif)
SUID (Set User ID) Les processus héritent de l’UID du fichier lors de l’exécution. Fait s’exécuter le fichier avec l’UID du propriétaire. Aucun effet chmod u+s <fichier> ls -l (affiche un s dans les permissions du propriétaire)
SGID (Set Group ID) Les processus héritent du GID du fichier lors de l’exécution. Fait s’exécuter le fichier avec le GID du groupe propriétaire. Les fichiers créés dans le répertoire héritent du groupe du répertoire. chmod g+s <fichier/répertoire> ls -l (affiche un s dans les permissions du groupe)
ACL (Access Control List) Permet des permissions plus granulaires pour différents utilisateurs et groupes sur des fichiers/répertoires. Permissions spécifiques pour certains utilisateurs/groupes. Idem, avec des permissions fines pour les fichiers créés dans le répertoire. setfacl -m u:alice:rwx <fichier/répertoire> getfacl <fichier/répertoire> (affiche les ACLs en détail)
UMASK (User Mask) Définit les permissions par défaut pour les nouveaux fichiers/répertoires créés par un utilisateur. Détermine les permissions par défaut des nouveaux fichiers créés. Détermine les permissions par défaut des nouveaux répertoires créés. umask 022 (pour définir le masque) umask (affiche les valeurs actuelles)

Quelques précisions supplémentaires :
#

  • Sticky bit : Principalement utilisé pour les répertoires partagés, comme /tmp.
  • SGID : Très utile dans les répertoires partagés pour garantir que tous les fichiers créés appartiennent au même groupe.
  • SUID : Utilisé sur certains programmes comme passwd, qui doivent s’exécuter avec les privilèges du superutilisateur.
  • ACLs : Permettent de dépasser les limitations du modèle classique de permissions en fournissant des contrôles d’accès plus fins.
  • UMASK : Ce n’est pas un bit spécial à proprement parler, mais il influence directement les permissions par défaut des nouveaux fichiers/répertoires.
RH134 - Cet article fait partie d'une série.
Partie 32: Cet article

Articles connexes

Cron - Le plannificateur de tâche
redhat
Optimiser les performances
redhat
Réaliser des scripts Bash
redhat