Bonjour,
Après avoir inclue le fichier addressbook.conf dans mon slapd.conf, je m’apperçois que les ACL nouvellements intégrées sont bien lues mais ne fonctionnent pas correctement. Aucune des ACL n’est appliquées lors de la recherche d’un contact ou de la création d’un contact.
Voici mon slapd.conf :
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
#include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/hopital.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
moduleload back_bdb.la
moduleload back_ldap.la
moduleload back_ldbm.la
moduleload back_passwd.la
moduleload back_shell.la
loglevel 32
access to dn.one=“ou=Users,dc=ch-guingamp,dc=fr” attrs=entry,sn,mail,cn,givenName,telephoneNumber,uid,objectClass
by anonymous read
access to dn.one=“ou=Groups,dc=ch-guingamp,dc=fr” attrs=cn,memberUid,objectClass
by anonymous read
access to dn.one=“ou=People,dc=ch-guingamp,dc=fr” attrs=entry,sn,mail,cn,givenName,telephoneNumber
by anonymous read
include /etc/openldap/acl_addressbooks.conf
access to *
by * peername.ip=192.168.128.254 write
access to *
by * none
…
Voici acl_addressbooks.conf
allow read of addressbook by owner and egwadmin account
access to dn.regex="^cn=([^,]+),ou=personal,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=entry
by dn.regex=“uid=$1,ou=accounts,o=$2,dc=ch-guingamp,dc=fr” read
by dn.regex=“cn=admin,o=$2,dc=ch-guingamp,dc=fr” write
by users none
allow user to create entries in own addressbook; no-one else can access it
needs write access to the entries ENTRY attribute …
access to dn.regex="cn=([^,]+),ou=personal,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=children
by dn.regex=“uid=$1,ou=accounts,o=$2,dc=ch-guingamp,dc=fr” write
by users none
… and the entries CHILDREN
access to dn.regex="cn=([^,]+),ou=personal,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=entry,@inetOrgPerson
by dn.regex=“uid=$1,ou=accounts,o=$2,dc=ch-guingamp,dc=fr” write
by users none
Access to groups addressbooks
allow read of addressbook by members and egwadmin account
access to dn.regex="^cn=([^,]+),ou=shared,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=entry
by group.expand=“cn=$1,ou=groups,o=$2,dc=ch-guingamp,dc=fr” read
by dn.regex=“cn=admin,o=$2,dc=ch-guingamp,dc=fr” write
by users none
allow members to create entries in there group addressbooks; no-one else can access it
needs write access to the entries ENTRY attribute …
access to dn.regex="cn=([^,]+),ou=shared,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=children
by group.expand=“cn=$1,ou=groups,o=$2,dc=ch-guingamp,dc=fr” write
by users none
… and the entries CHILDREN
access to dn.regex="cn=([^,]+),ou=shared,ou=contacts,o=([^,]+),dc=ch-guingamp,dc=fr$"
attrs=entry,@inetOrgPerson
by group.expand=“cn=$1,ou=groups,o=$2,dc=ch-guingamp,dc=fr” write
by users none
D’après les log de slapd, toutes les règles sont bien prises en comptes.
Lors de la création d’un contact, la règle appliquée est :
access to *
by * peername.ip=192.168.128.254 write
(192.168.128.254 est l’ip du serveur sur lequel se trouve egroupware)
Lors de l’affichage du Carnet d’adresse, tous les contacts sont affichés, même les contacts privés. De plus, si un utilisateur ne se trouvant pas dans le groupe Admins affiche la liste des contacts, les contacts se trouvant dans le groupe Admins sont affichés.
Si je passe la ligne
access to *
by * peername.ip=192.168.128.254 write
en
access to *
by * peername.ip=192.168.128.254 read
Alors je ne peux plus créer aucun contact
Quelqu’un aurait-il un début de solution à m’aporter? Je n’y connais malheureusement pas grand chose à openldap…