ubuntu: les acl -4
une autre source aussi très intéressante et synthétique http://ww2.ac-creteil.fr/reseaux/systemes/linux/les-acls.html
I définition
Les ACLs ou Liste de Contrôle d'accès permettent de gérer les permissions caractérisant les autorisations d'accès à un fichier de façon beaucoup plus fine que le mécanisme Linux traditionnel. Le support des ACLs sur un serveur SAMBA est le moyen ultime d'intégrer totalement les postes clients WINDOWS en travaillant avec la Windind. Les ACLs permettent de réduire sensiblement le nombre de partages nécessaires. Un dossier unique par serveur sera créé pour la gestion des classes, que ce soit pour les élèves ou pour les profs.II Les droits sous linux.
Les trois niveaux de permission, Read, Write et eXecute, sont codés chacun sur un bit, sont manipulables avec la commande chmod, et sont appliqués sur les trois uniques classes d'utilisateurs : User, Group, et Other. Dans ce schéma, User représente le propriétaire du fichier, Group les utilisateurs du même groupe que User, c'est-à-dire partageant les mêmes GID (group id, défini dans /etc/group), et Other, tous les autres utilisateurs, c'est-à-dire appartenant à un groupe différent. Le masque de bits contenant les protections données par défaut à un fichier (c'est-à-dire lors de sa création) est stocké dans le fichier inode, et ce masque est initialisé par défaut avec la valeur définie dans la variable d'environnement umask. Cette variable est définie au niveau système, existe pour tout utilisateur donné et peut lui être spécifique. Cette valeur correspond aux protections rw,r,r pour User, Group et Other, respectivement.III Utiliser les ACLs
Structure d'une Access Control List :Une ACL est une structure composée des données suivantes : ACL_USR_OBJ propriétaireACL_USR utilisateur identifié
ACL_GROUP_OBJ groupe d'appartenance
ACL_GROUP groupe nommé
ACL_MASK droits effectifs
ACL_OTHER autres utilisateurs
Les champs ACL_USR_OBJ, ACL_GROUP_OBJ et ACL_OTHER correspondent exactement aux structures de protection conventionnelles sur les fichiers Unix. Il y a une et une seule de chacune de ces trois structures dans une ACL. ACL_USER et ACL_GROUP définissent les appartenances et les droits pour les utilisateurs et les groupes et impliquent une définition dans ACL_MASK. Cette définition limite les droits portés par les deux structures précédentes, en réalisant un droit effectif, qui est la somme des droits portés par les champs USER et/ou GROUP et le masque. Dans le cas où la valeur définie dans le masque vient réduire l'étendue des droits définis dans les champs USER et GROUP, la valeur affichée par la commande getfacl sera suivie du champ effective, indiquant les droits réellement mis en oeuvre. Le caractère + peut être affiché à la suite des attributs d'un fichier suite à un ls -l si les attributs qui sont alors affichés ne décrivent pas complètement les protections associées au fichier. Ils existent deux commandes : setfacl(1) et getfacl(1) qui vont vous permettre de définir des ACLs, et de voir le contenu des ACL
IV La commande Getfacl en mode console
LA commande Getfacl permet seulement de visualiser les permissions sur les fichiers ou les répertoires. Vous pouvez voir ci dessous les nombreuses possibilités de la commande getfacl getfacl 0.7.8 -- get file access control listsUsage: getfacl [-adRLPvh] file ...
-a, --accessdisplay the file access control list only
-d, --defaultdisplay the default access control list only
--omit-headerdo not display the comment header
--all-effective print all effective rights
--no-effective print no effective rights
--skip-base skip files that only have the base entries
-R, --recursive recurse into subdirectories
--post-oder visit subdirectories first
-L, --logical logical walk, follow symbolic links
-P, --physical physical walk, do not follow symbolic links
--tabularuse tabular output format
--absolute-names don't strip lending '/' in pathnames
-v, --version print version and exit
-h, --help this help text debian:/var/se3/Classes# getfacl Classe_1ES1/ # file: Classe_1ES1 # owner: admin # group: nogroup user::rwx user:blaise.pascal:r-x user:jules.michelet:r-x user:evariste.galois:r-x user:marie.curie:r-x user:alain.mimoun:r-x group::--- group:Classe_1ES1:r-x group:admins:rwx mask::rwx other::--- default:user::rwx default:user:blaise.pascal:rwx default:user:jules.michelet:rwx default:user:evariste.galois:rwx default:user:marie.curie:rwx default:user:alain.mimoun:rwx default:group::--- default:group:admins:rwx default:mask::rwx default:other::---
V La commande Setfacl en mode console
Les syntaxes de base de setfacl sont :# setfacl <-s/-m/-x> u:<utilisateur>:<permissions> <fichier(s)># setfacl <-s/-m/-x> g:<groupe>:<permissions> <fichier(s)># setfacl <-s/-m/-x> o:<permissions> <fichier(s)>Les paramètres -s, -m, et -x servent respectivement à attribuer, modifier et supprimer une permission. u, g et o servent à spécifier si l'on s'adresse à un utilisateur, à un groupe ou bien aux autres utilisateurs. Les permissions restent les permissions classiques sous Unix à savoir r, w et x.
setfacl 0.7.8 -- set file access control lists
Usage: setfacl [-bkndRLPvh] { -s|-S|-m|-M|-x|-X ... } ... file ...
-s, --set=aclset the ACL of file(s), replacing the current ACL
-S, --set-file=file read ACL entries to set from file
-m, --modify=acl modify the current ACL(s) of file(s)
-M, --modify-file=file read ACL entries to modify from file
-x, --remove=acl remove entries from the ACL(s) of file(s)
-X, --remove-file=file read ACL entries to remove from file
-b, --remove-all remove all extended ACL entries
-k, --remove-default remove the default ACL
--maskdo recalculate the effective rights mask
-n, --no-mask don't recalculate the effective rights mask
-d, --default operations apply to the default ACL
-R, --recursive recurse into subdirectories
--post-order visit subdirectories first
-L, --logical logical walk, follow symbolic links
-P, --physical physical walk, do not follow symbolic links
--restore=file restore ACLs (inverse of `getfacl -R')
--test test mode (ACLs are not modified)
-v, --version print version and exit
-h, --help this help text Exemple, nous voulons donner au groupe pierrot le droit de lecture sur le fichier test.txt :
# setfacl -s g:pierrot:rtest.txtExemple 2, nous souhaitons modifier les permissions de l'utilisateur petit sur le répertoire /var/www et nous voulons que ces permissions s'applique également aux sous-dossiers de ce répertoire :
# setfacl -R -m u:petit:rwx /var/wwwExemple 3 : nous souhaitons retirer toutes les permissions sur le fichier /etc/fichier :
# setfacl -b /etc/fichierExemple 4 : nous voulons donner les mêmes permissions à /etc/fichier qu'à /var/www :
# getfacl /var/www | setfacl -S- /etc/fichier VI La gestion des ACLs avec l'interface graphique
Les ACLs peuvent se gérer en mode console avec les fonctions Getfacl et Setacl; mais aussi avec Windows 2000 ou Windows XP Pro.
Pour cela sélectionner le fichier ou le répertoire auquel vous souhaitez gérer les droits et cliquez sur Propriétés, Sécurité.
Si vous souhaitez donnez des droits à une personne ou a un groupe qui n'apparait pas dans la liste des ayants droits cliquez sur Ajouter et sélectionner la personne ou le groupe.
Validez votre choix en cliquant sur OK
Vous pouvez donner les droits suivants sur l'élément sélectionnez :
Vous pouvez affiner votre délégation de droit en cliquant sur Avancé.
Ce menu permet de choisir si vous étendez vos droits par récursivité sur les sous-répertoires, les fichiers etc ....
VII Exemple
Pour l'exemple nous ferons référence au serveur de fichiers Samba-Edu3.