ubuntu: les acl -4

Publié le par duteil

une autre source aussi très intéressante et synthétique http://ww2.ac-creteil.fr/reseaux/systemes/linux/les-acls.html

Les ACLs (Access Control Liste) sous debian

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étaire
ACL_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 lists
Usage: 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.txt
 
Exemple 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/www
 
Exemple 3 : nous souhaitons retirer toutes les permissions sur le fichier /etc/fichier :
# setfacl -b /etc/fichier
   
Exemple 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.

Exemple 1

1°) Je souhaite créer un répertoire "profs-techno" dans le répertoire I (Docs) 
Vous effectuerez la création en mode console et en mode graphique avec un client Windows 2000 ou XP Pro.
 
2°) Vous allez créer un groupe de "profs_techno"  a l'aide de l'interface SE3.
et remplir le groupe d'enseignant de la discipline
 
3°) Affectez les droits en mode console pour et seulement pour le groupe "prof_techno".
setfacl -m g:profs_techno :rwx /var/se3/Docs/profs_techno
Connectez-vous en tant qu'un professeur de technologie et essayer d'accéder à ce répertoire.
Faites la même chose mais en tant qu'enseignant d'une autre matière.
Que constatez-vous ?
 
4°) Affectez les droits en mode console à tous les élélments récursif du répertoire "prof_techno".
setfacl  -m d g:profs_techno :rwx /var/se3/Docs/profs_techno
 
5°) Supprimer le répertoire profs_techno sur I et réitérer la même opération à l'aide du client Windows.
 
6°) Pour chaque création effectuer un getfacl profs_techno imprimer et comparer le résultat en mode console et client Windows.
 

Exemple 2

Sujet : L'établissement souhaite pour son groupe IDD avoir un répertoire"IDD1" dans lequel on trouvera deux sous-répertoire travail et essai.
Le répertoire travail ne doit être accessible qu'au professeur enseignant dans l'IDD et les deux élèves responsables de chaque groupe. Les autres membres du groupe IDD ne doivent pas avoir accés à ce répertoire.
Le répertoire essai doit permettre à chaque membre de l'IDD de déposer leurs travaux. Les autres membres du groupe qui ne sont pas propriétaires du dépôt ne pourront que lire les fichiers sans pouvoir les modifier ni les copier.
Seul les deux enseignants auront des accés complets sur le répertoire "IDD1"
 
Etablir l'affectation et la gestion des ACLs en mode console et en mode client Windows.
Imprimer le rapport avec getfacl.
 
 
 
 
 
 

 

 

 

 

 

Publié dans ubuntu

Commenter cet article