Access Control List
De Ensiwiki.
Les ACLs, ou « Access Control List », sont un système de droits sur les fichiers qui s'ajoute à la gestion des droits « classiques » sous Unix (Utilisateur/Groupe/Autres, cf. les commandes chmod et ls -l). Elles peuvent vous permettre de donner les droits en lecture et/ou écriture à un répertoire bien particulier pour un utilisateur en particulier. Pour vous, une utilisation évidente est de donner les droits à vos binômes de TPs sur les répertoires concernés.
Méthode expresse, à l'Ensimag : autoriser-equipe
Vos enseignants vous ont préparé un script pour vous faciliter la vie : autoriser-equipe. Mettons qu'Alice veuille autoriser Bob et Charlie sur le répertoire ~alice/TPs/Ada/TP1, il suffit pour elle de lancer la commande :
telesun:~> autoriser-equipe ~/TPs/Ada/TP1/ bob charlie setfacl -Rm u:bob:rwx '/home/alice/TPs/Ada/TP1' setfacl -Rm d:u:bob:rwx '/home/alice/TPs/Ada/TP1' setfacl -Rm u:charlie:rwx '/home/alice/TPs/Ada/TP1' setfacl -Rm d:u:charlie:rwx '/home/alice/TPs/Ada/TP1' setfacl -Rm d:u:alice:rwx '/home/alice/TPs/Ada/TP1' setfacl -m u:bob:x '/home/alice/TPs/Ada' setfacl -m u:charlie:x '/home/alice/TPs/Ada' setfacl -m u:bob:x '/home/alice/TPs' setfacl -m u:charlie:x '/home/alice/TPs' setfacl -m u:bob:x '/home/alice' setfacl -m u:charlie:x '/home/alice' Les utilisateurs 'bob charlie' peuvent maintenant travailler dans /home/alice/TPs/Ada/TP1 Pour enlever les droits sur ce repertoire : setfacl -Rb '/home/alice/TPs/Ada/TP1' Pour voir les ACLs sur ce repertoire : getfacl '/home/alice/TPs/Ada/TP1'
Un exemple : donner les droits à votre binôme
Supposons que l'utilisatrice alice souhaite donner les droits en écriture à l'utilisateur bob sur le répertoire ~alice/tps/tp1-algo/ tout en protégeant les répertoires parents :
- On va d'abord interdire complètement à bob d'accéder à
~alice:
alice> setfacl -Rm u:bob:--- ~/
- Ensuite on permet à
bobde (seulement) traverser le répertoire~aliceen lui donnant les droits d'exécution. De cette manière il ne peut ni voir ni lire le contenu de~alicemais seulement accéder au dossier que l'on va lui autoriser (dans la mesure où il connait le chemin d'accès).
alice> setfacl -m u:bob:x ~/
- Deux possibilités se présentent à nous : autoriser l'utilisateur à accéder en lecture seule à
~alice/tps/,
alice> setfacl -m u:bob:rx ~/tps/
Ou bien : on peut n'autoriser que la traversée du répertoire ~alice/tps mais pas sa lecture, au choix.
alice> setfacl -m u:bob:x ~/tps/
- Quelque soit la solution choisie, la suite reste identique, on peut vérifier avec :
alice> ls -ld ~alice/ drwx--x---+ alice ensi1a 4096 2008-06-26 19:25 /home/alice
Un caractère + apparaît derrière les rwx------ habituels, pour signifier qu'une ACL a été positionnée sur ce répertoire. Pour en voir le contenu, on fait :
alice> getfacl ~ getfacl: Removing leading '/' from absolute path names # file: home/testacls # owner: testacls # group: testacls user::rwx user:bob:--x group::--- mask::r-x other::---
Bob a maintenant les droits --x sur ce répertoire. De son côté, il peut faire un cd vers le répertoire ~alice/tps/, mais n'a pas encore accès au répertoire ~alice/tps/tp1-algo/.
- On donne les droits en écriture :
alice> setfacl -Rm u:bob:rwx ~/tps/tp1-algo
Et le tour est joué : Bob peut maintenant éditer les fichiers du répertoire ~/tps/tp1-algo. Par contre, s'il en crée de nouveaux, ils lui appartiendront par défaut, et Alice n'aura pas les droits dessus. La dernière étape résout ce problème :
- On fait en sorte que les droits du répertoire soient hérités automatiquement pour les nouveaux fichiers :
alice> setfacl -Rm d:u:bob:rwx ~/tps/tp1-algo alice> setfacl -Rm d:u:alice:rwx ~/tps/tp1-algo
Et voilà !
Plus de doc
- Gestion des ACLs sur lea-linux.org, en français et facile à lire.
- Oserions-nous vous suggérer man getfacl et man setfacl ?

