Access Control List (bis)

Niveau : Star Star Star Empty Empty
Résumé : getfacl ; setfacl ; cp ; mv ; tar ; rsync ; chmod ; umask

Après avoir vu comment marchent les ACL, vous avez voulu les utiliser tous les jours. Et là vous avez besoin de quelques petites connaissances supplémentaires.

Les outils

Les outils de base ont pour la plupart bien intégré les ACL.

ls

Un ls -l ajoute un + après les droits pour vous indiquer qu'il faut utiliser getfacl pour avois plus de détail sur les droits.

Et c'est tout.

mv cp rsync

mv conserve les ACL.
cp conserve les ACL si on lui demande (avec les option -a ou -p)
rsync conserve les ACL si on lui demande (avec l'options -A)

tar

tar ne sait pas conserver les acl, il faut donc utiliser un outil différent, comme star, ou stocker les ACL dans un fichier à part et le sauvegarder avec tar. Ex:

$ getfacl -R repertoire > ACL
$ tar cvz backup.tgz repertoire ACL
$ tar xfz backup.tar.gz
$ setfacl --restore=ACL

scp

scp ne conserve bien évidemment pas les ACL, il ne conserve déjà pas les droits.

Outil perso

A vous de savoir si les script et les outils que vous avez conservent les ACL. Faites particulièrement attention aux systèmes de backup qui bien souvent utilisent tar. Si le votre ne les supporte pas, enregistrez le résultat de getfacl -R avec chacun de vos backups.

Les subtilités

Les ACL sont bien pratiques, mais l'usage en révèle quelques subtilités qui rendent parfois la chose incompréhensible.

Eviter d'utiliser le mask

Le mask permet de limiter les droit du fichier pour tout le monde au dessus des ACL.

Mais le mask ne concerne pas tout le monde. Il ne concerne pas l'utilisateur propriétaire du fichier, mais il concerne le groupe propriétaire du fichier. Il concerne tous les utilisateurs et groupes nommés, mais il ne concerne pas other.

De plus, par défaut, le mask est recalculé automatiquement par les commandes setfacl et chmod. C'est un coup à n'y rien comprendre. Le mask est mal foutu, évitez-le.

Droits standard unix

L'utilisateur sans nom est le propriétaire du fichier, les 2 commandes sont équivalentes :

$ setfacl -m u::rwx fichier 
$ chmod u+rwx fichier

Le groupe sans nom est le groupe propriétaire du fichier, mais les droits unix pour le groupe s'obtiennent en combinant le mask et les droits du groupe sans nom, les commandes suivantes sont donc équivalentes (du point de vue du groupe) :

$ setfacl -m g::rw,m::rwx fichier 
$ chmod g+rw fichier

Other concerne tous les gens qui ne matchent pas. Comme pour les droits unix, cela inclue une petite subtilité, si other a des droits plus importants que le groupe, il se peut que quelqu'un faisant partie du groupe n'ait pas accès au fichier alors que n'importe qui y a accès.

Groupes externes

Notez que contrairement au groupe du fichier, vous avez le droit de positionner n'importe quel groupe dans une ACL, même un groupe dans lequel vous n'êtes pas (ou un utilisateur que vous n'êtes pas :-).

Plus de bit suid

Le bit suid pour les répertoire ne devrait plus être utilisée. Il fonctionne toujours puisqu'il positionne le propriétaire et le groupe des fichiers créés, mais ils ne devrait plus être nécessaire puisque les "default" vous permettent de donner les droits à d'autres utilisateurs et groupes directement et automatiquement à la création de nouveaux fichiers.

Plus d'umask

Les ACL "default" des répertoires ont priorité sur l'umask. Ce qui veut dire que l'umask ne sert plus que dans une seule situation : dans les répertoires qui n'ont pas de d'ACL default.

Conclusion

Voila vous êtes maintenant armés pour utiliser les ACL partout. Très bonne idée, cela facilite le travail à plusieurs.

Vus : 292
Publié par Peck : 100