Mettre en oeuvre des ACL sous Linux
La norme historique POSIX définit à 3 entités (propriétaire, groupe propriétaire, autres) sur lesquels, on à la possibilité d'appliquer des droits d’accès en lecture, écriture et d'exécution sur les fichiers et répertoires. Afin d'étendre ces possibilités, il a été mis en place les ACL. Il est maintenant possible de donner des droits de lecture, d'écriture ou d'exécution à un utilisateur particulier sans qu'il en soit le propriétaire ou qu'il fasse parti d'un groupe de propriétaire.
Linux introduction aux ACL
Nous allons partir de cette arborescence
mdkir -p {aclDossier/aclImage.jpg,aclFichier.txt}
. ├── aclDossier │ ├── aclImage.jpg └── aclFichier.txt
Puis récupérer les ACL sur le dossier courant
getfacl .
# file: .
# owner: howto
# group: users
user::rwx
group::r-x
other::r-x
qui correspond en réalité au droit POSIX rwx-r-xr-x
Mainenant positionnant une ACL à l'utilisateur user1 en lecture et écriture aclDossier/aclImage.jpg
setfacl -m u:user1:rw aclDossier/aclImage.jpg
Si nous verifions les ACL sur le fichier aclImage.jpg
getfacl aclDossier/aclImage.jpg
On obtient
# file: aclDossier/aclImage.jpg # owner: root # group: root user::rw- __user:user1:rw-__ group::r-- mask::rw- other::r--
On voit la ligne user:user1:rw-
On peut aussi avec la commande ls -l aclDossier se rendre compte qu'il existe des acl sur le fichier car un petit + a été ajouté à la sortie de la commande.
ls -l aclDossier
-rw-rw-r--+ 1 root root 0 1 janv. 17:59 aclImage.jpg
On peut de la même manière positionner des acl sur un groupe.
setfacl -m g:testacl:rw,u:user1:r aclDossier/aclImage.jpg
Nous avons enlevé le droit en écriture sur l'image à l'utilisateur user1 et ajouté des droits de lecture et en écriture au groupe testacl
Nous pouvons visionner les droits
getfacl .
# file: aclDossier/aclImage.jpg # owner: root # group: root user::rw- user:user1:r-- group::r-- group:testacl:rw- mask::rw- other::r--
Afin que les droits soient propagés aux sous répertoires, il faut préciser qu'il s'agit de droits par défaut avec l'option 'd'.
setfacl -m d:g:testacl:rwx aclDossier
Un petit coup de getfacl plus tard
# file: aclDossier/ # owner: howto # group: users user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:group:testacl:rwx default:mask::rwx default:other::r-x
Si maintenant nous créons un dossier dans aclDossier.
mkdir aclDossier/db
getfacl aclDossier/db
///
- file: aclDossier/db
- owner: root
- group: root
user::rwx group::r-x group:testacl:rwx mask::rwx other::r-x default:user::rwx default:group::r-x default:group:testacl:rwx default:mask::rwx default:other::r-x
Nous pouvons voir que les droits sur le dossier db ont hérité de celle du dossier aclDossier.
La suppression se fait avec la même commande et l'option -x
Supprimer les ACL du groupe testacl sur le dossier aclDossier/db)
setfacl -x g:testacl aclDossier/db
Supprimer tous les ACL sur un dossier
setfacl -b aclDossier
Lors de la copie de dossier, les ACL ne sont pas copier automatiquement, il faut préciser l'argument à la commande "cp"
cp -ra aclDossier /sauvegarde
Voilà, concernant l'introduction aux ACL sous linux.