===== Linux access control list (ACL) ====== {{:systeme:linux_logo.jpeg?nolink100 |}}Les droits sur un fichier/répertoire permettent de restreindre les accès à un fichier/répertoire, suivant un certain nombre de paramètres.\\ Les trois principaux droits sur des fichiers/répertoires sont: * la lecture ('r') * l'écriture ('w') * l’exécution ('x') Ces différents droits sont associées à trois types d'utilisateurs : * Le propriétaire du fichier ('u') * les utilisateurs appartenant au groupe auquel appartient le fichier/répertoire ('g') * les autres, qui correspond à tous le monde ('o') C'est une des bases de la sécurité informatique.\\ De nombreuses combinaisons sont possibles.\\ On peut ainsi permettre aux autres utilisateurs la lecture et l'exécution d'un fichier/répertoire, mais pas sa modification, etc.\\ Ce système a une limite, il ne permet pas de réglages fins.\\ Il est par exemple impossible de donner les mêmes droits pour partager des fichiers entre plusieurs utilisateurs ou groupes d'utilisateurs, tout en les gardant confidentiels face aux autres.\\ Pour pallier ces lacunes a été conçu le système des ACL.\\ un système permettant de faire une gestion plus fine des droits d'accès aux fichiers que ne le permet la méthode employée par les systèmes UNIX/LINUX.\\ ~~READMORE~~ ==== Activation ==== Les ACL ne sont pas nativement activées sur Linux mais le noyau les prend en charge.\\ Pour savoir si le noyau Linux prend en charge les ACL : grep ACL /boot/config-$(uname -r) Voici, le résultat : CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_JFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_TMPFS_POSIX_ACL=y # CONFIG_HFSPLUS_FS_POSIX_ACL is not set CONFIG_JFFS2_FS_POSIX_ACL=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_NFS_V3_ACL=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3_ACL=y CONFIG_NFS_ACL_SUPPORT=m CONFIG_CEPH_FS_POSIX_ACL=y CONFIG_CIFS_ACL=y CONFIG_9P_FS_POSIX_ACL=y Elle doit retourner ''y'' pour le type système de fichier qui vous intéresse. \\ Le package ''acl'' doit être déjà installé, si non: apt-get install acl Pour activé sur une partition du système de fichier, modifier votre fichier ''fstab'' comme cela : vim /etc/fstab /dev/mapper/VG0-racine / ext4 errors=remount-ro,acl 0 1 # /boot was on /dev/sda1 during installation UUID=57017155-d648-4379-b705-7375d85dfc61 /boot ext4 defaults 0 2 /dev/mapper/VG0-share /share ext4 defaults,acl,user_xattr,barrier=1 0 2 /dev/mapper/VG0-swap none swap sw 0 0 Puis remonter le système de fichier : mount -o remount / ==== Utilisation : ==== L'attribution des droits se fait grâce à la commande ''setfacl'', la lecture des droits avec ''getfacl''\\ Ainsi les deux commandes suivantes sont équivalentes : chmod u=rw fichier setfacl -m u::rw fichier Un fichier dont les ACL auront été spécifiés verra s'ajouter un ''+'' à la fin de la liste des droits \\ Voici, un exemple : drwxrwx---+ 4 ksh ksh 4096 févr. 17 13:40 test drwxrwx---+ 2 ksh ksh 4096 févr. 23 08:05 test2 drwxrwx---+ 17 ksh ksh 4096 févr. 9 15:43 test3 drwxrwx--- 2 ksh ksh 12288 févr. 22 07:51 test4 ==== Utilisation de ''getfacl'' : ==== **getfacl** permet d'afficher l'ensemble des permissions définies \\ Voici, un exemple getfacl test/ # file: test/ # owner: ksh # group: ksh user::rwx user:toto:rwx group::--- mask::rwx other::--- default:user::rwx default:user:toto:rwx default:group::--- default:mask::rwx default:other::--- Ici on peut voir que le propriétaire du répertoire ''test'' (ksh) a les droits ''rwx'' et le login toto ''rwx'', les autres utilisateurs n'ont aucun droit. **getfacl -d …** spécifie des acl par défaut, qui ne peuvent s'appliquer qu'aux répertoires. Voici, un exemple : getfacl -d test/ # file: test/ # owner: ksh # group: ksh user::rwx user:toto:rwx group::--- mask::rwx other::--- Les permissions effectives sont affichées individuellement pour les users ou groups, Cela apparaît quand le masque est trop restrictif.\\ Voici, un exemple : getfacl test/ # file: test/ # owner: ksh # group: ksh user::rwx user:toto:rwx #effective:r-x group::--- mask::r-x other::--- default:user::rwx default:user:toto:rwx #effective:r-x default:group::--- default:mask::r-x default:other::--- ==== Utilisation de ''setfacl'' : ==== **setfacl** permet d'ajouter des permissions\\ Voici, exemple : setfacl -m u:toto:rwx test/ Ici, on ajoute les permissions de lire, écrire et d’exécution sur le répertoire ''test'' au login ''toto''.\\ On peut cumuler les login et groupe comme cela : setfacl -m u:toto:rwx,u:titi:r-x,g:tata:r-x test/ On peut aussi le faire de façon récursive pour l'ensemble d'un répertoire : setfacl -R -m u:toto:rwx,u:titi:r-x,g:tata:r-x test/ On peut définir les permissions par défaut : setfacl -R -m u:toto:rwx,d:u:titi:rwx test/ Avec cette commande nous avons ajouté les permissions de lire, écrire et d’exécution sur le répertoire ''test'' au login ''toto'' et tous les répertoires/fichiers en dessous, mais aussi ajouté les même permission par défaut.\\ Définir le masque : setfacl -m m::rwx test/ Définir les permissions pour le groupe : setfacl -m g::rwx test/ Définir les permissions pour le propriétaire : setfacl -m u::rwx test/ Définir les permission pour les autres login : setfacl -m o::rwx test/ Définir les permissions par défaut : setfacl -m d:u::rwx,g::rwx,o::rwx test/ d'ailleurs cette commande équivaut à cela chmod 777 test/