FIXME Translate this page

Access Control List

Points techniques

Fichiers

Les ACL sous VHFFS sont implantées via le fichier vhffs-api/src/Vhffs/Acl.pm.

Base de données

Elles sont enregistrées au sein de la table vhffs_acl, sa structure est la suivante :

vhffs=> \d vhffs_acl
                            Table «public.vhffs_acl»
 Colonne |  Type   |                       Modificateurs                        
---------+---------+------------------------------------------------------------
 acl_id  | integer | not null default nextval('vhffs_acl_acl_id_seq'::regclass)
 oid_src | integer | 
 perm    | integer | not null
 oid_dst | integer | 
Index :
    «vhffs_acl_pkey» PRIMARY KEY, btree (acl_id)
Contraintes de clés secondaires :
    «fk_vhffs_acl_vhffs_object_dst» FOREIGN KEY (oid_dst) REFERENCES vhffs_object(object_id) ON DELETE CASCADE
    «fk_vhffs_acl_vhffs_object_src» FOREIGN KEY (oid_src) REFERENCES vhffs_object(object_id) ON DELETE CASCADE

L'identifiant de l'ACL semble relativement inutile. oid_src référence l'identifiant d'un objet utilisateur ou groupe, oid_dst est l'objet auquel est appliqué l'ACL. Enfin, perm est un entier symbolisant le niveau de permission, un niveau donné inclut tous les niveaux inférieurs (le niveau 4 implique les niveaux 1, 2 et 3).

Constantes

Elles sont définies dans vhffs-api/src/Vhffs/Constants.pm et commencent par ACL_ :

ACL_DENIED => 0,   # Accès refusé
ACL_VIEW => 2,     # Peut voir le service
ACL_MODIFY => 4,   # Peut modifier le service
ACL_CREATEACL => 6, # Peut ajouter des autorisations
ACL_MANAGEACL => 8, # Peut modifier les autorisations
ACL_DELETE => 10    # Peut supprimer le service

Gestion des ACL

Création d'une ACL

À chaque création d'un service (site web, serveur SVN, …) une nouvelle entrée est ajoutée pour l'user avec le niveau de permissions maximal.

L'ajout d'une ACL après coup se fait via la fonction add_acl($user|$groupe, $objet auquel on donne accès, $permission, $main).

Suppression d'une ACL

La suppression d'une ACL se fait via la fonction del_acl($user|$groupe, $objet auquel on supprime l'accès, $main).

Note : la méthode del_acl vérifie qu'il reste au moins une personne en mesure de gérer les ACLs après la suppression, si ce n'est pas le cas, la suppression échoue.

dev/acl.txt · Last modified: 2011/03/28 22:55 by gradator
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki