8. La gestion des ACLs

Cette partie est assez généraliste et peut concerner indifféremment le PDC, le BDC ou les deux... ! A vous de voir, selon vos besoins... Dans mon cas, les deux serveurs en ont bénéficié !

Les ACLs offrent une grande souplesse dans la gestion des droits des utilisateurs. Alors que les droits POSIX (droits GNU/Linux standards) définissent une liste de 3 acteurs : User/Group/Others (utilisateur/groupe/tous les autres) intéragissant avec le système de fichier, les ACLs permettent d'en ajouter à son gré parmi la liste des utilisateurs/groupes existants. On ne va pas revenir sur le débat "ACLs vs POSIX", mais sachez qu'il est vrai que l'on peut gérer des droits très fins en ayant pour sa disposition les droits POSIX (en jouant avec la création de groupes), comme il est vrai que cela peut être au prix d'une perte certaine de vos attributs capillaires !

Intégrer les ACLs se fait à trois niveaux : au niveau du système de fichier, tout d'abord, ensuite à celui de l'environnement, enfin au niveau de Samba. Nous allons procéder par étapes pour obtenir, au final, un environnement plus proche d'un domaine NT classique.

8.1. Les ACLs au niveau du système de fichier

Il convient tout d'abord de bien choisir son système de fichier. Il faut qu'il supporte les ACLs, évidemment. Parmi les systèmes de fichiers, nous avons à notre disposition XFS, EXT2 (patch kernel), EXT3 (patch kernel)... Pour ma part, j'ai choisi d'utiliser XFS, car c'est le seul à supporter les ACLs en natif et il offre de très bonnes performances. Il faut généralement recompiler le noyau de la ditribution GNU/Linux pour bénéficier du support d'un nouveau système de fichier et des ACLs, je vous passe les détails de cette opération, ceci étant une autre histoire...

Note : Les ACLs pour XFS ont été oubliées pour le noyau de la Mandrake 9.1, cf. : http://qa.mandrakesoft.com/show_bug.cgi?id=3615

Une fois votre noyau recompilé et votre machine redémarrée, vous allez pouvoir créer une nouvelle partition utilisant votre nouveau système de fichiers. Utilisez pour ceci fdisk et newfs. Attention aux pertes de données... C'est sur cette nouvelle partition que vous devrez placer tous vos partages Samba qui bénéficieront ainsi des ACLs.

8.2. Les ACLs au niveau de l'environnement

Il faut ensuite que les binaires utilisés "quotidiennement" supportent les ACLs et que notre machine soit prête à compiler des applications supportant les acls, il faut donc encore installer quelques packages... libacl1, libacl1-dev, acl, libattr1, libattr1-dev, attr, libxfs1, xfslibs-dev, xfsdump et xfsprogs. En utilisant apt, cela se fait très rapidement.

Une fois tout ceci effectué (noyau, packages...), nous allons tester si le FS supporte les acls :
- touch document.txt
- setfacl -m u:utilisateur:rw document.txt
(il faut évidemment que l'utilisateur 'utilisateur' existe)
- getfacl document.txt

Si vous n'avez pas eu de message d'erreur comme 'Operation not supported' lors du setfacl et si vous retrouvez bien votre ACL lors du getfacl, c'est que tout est correctement installé et fonctionne, passons maintenant à la partie Samba...

8.3. Les ACLs au niveau de Samba

Votre FS supporte les ACLs, votre système aussi... Il reste à demander à Samba de les gérer... Si vous avez compilé Samba avec les options décrites dans ce document, vous avez intégré les ACLs. Sinon, il faut recommencer... L'option intéressante ici est '--with-acl-support'.

La deuxième (et dernière chose) à effectuer pour le support des ACLs sous Samba est de mettre 'nt acl support' à 'Yes' dans la section [global] ou celle du partage dans le fichier smb.conf. Notez que cette option est par défaut à Yes, mais par souci de propreté, mieux vaut la spécifier...

Déplacez enfin tous vos partages sur la(les) partition(s) nouvellement créées supportant les ACLs.

8.4. Tests et limites

Notez que les ACLs GNU/Linux sont bien moins efficaces que celles proposées par NTFS. Nous serons donc limités dans le choix des droits que nous pourrons attribuer (mais les droits NTFS étendus sont-ils bien utiles ?).

Je ne vais pas détailler toutes les procédures de tests, elles sont relativement simples. Vous pouvez, pour vous faire rapidement une idée du bon fonctionnement de votre configuration, créer deux utilisateurs et vous amuser à changer leurs droits.

J'ai effectué pour ma part quelques tests plus approfondis et ai remarqué quelques détails :

- Les ACLs se limitent aux droits POSIX seulement (rwx)
- Seul le propriétaire peut modifier les droits du fichier
- Les refus explicites ne sont pas gérés
- Si un utilisateur n'a pas le droit d'écriture sur un fichier, il peut tout de même en changer le nom ou le supprimer (!!!)
- Comme d'habitude, les droits de l'utilisateur prévalent sur les droits du groupe