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
etgetfacl
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
- Pour un fichier :
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.