OpenLDAP : Ordre des ACL dans slapd.conf

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

OpenLDAP : Ordre des ACL dans slapd.conf

Messagepar darkukai » 22 Déc 2006 09:53

Bonjour,
J'ai un serveur OpenLdap qui gère l'authentification de mes utilisateurs sur mon serveur Mail
tout marche bien.

J'ai donc dans mon slapd.conf 2 acl de base dans l'odre :
- access to dn.base="" by * read
- access.. l'admin a full control sur tout et * a read sur tout

Maintenant en rajoutant Horde et quelque modules j'ai du rajouter des acls ( on m'avait précisé que l'ordre était super important).
donc j'ai mis :
- une acl qui donne le droit a chaque user de pouvoir changer son mot de passe ( marche nickel )
- une acl qui donne le droit a chaque user de sauver sa conf horde préférences ( marche nickel)
- access to dn.base="" by * read
- access.. l'admin a full control sur tout et * a read sur tout

Maintenant j'ai rajouter turba pour que chaque user ai son carnet d'@ perso je rajoute donc une acl qui leur donne accès a une OU=personal_addressbook qui contient pour chaque utilisateur une ou a son nom stockant son carnet d'@.

Seulement ou que je mette cette acl çà ne fonctionne pas :(
Si je mais tout le monde full control sur tout le module fonctionne mais sinon j'ai toujours "insuficient access "

Quelqu'un pourrait me rencarder un peu sur les ACL et leur propriétés j'ai pas mal surfer hier pour trouver mais la chasse a pas été très bonne :(

d'avance merci ;)
Avatar de l’utilisateur
darkukai
Major
Major
 
Messages: 72
Inscrit le: 07 Oct 2003 00:00
Localisation: lyon

Messagepar darkukai » 22 Déc 2006 12:55

Je met l'acl qui fonctionne pas j'ai essayez de la mettre a tout les niveau possible et elle est jamais prise en compte donc j'en déduit que çà viens de l'ACL.

access to dn="ou=(.+),ou=personnal_addressbook,dc=domain,dc=net"
by dn="uid=$1,ou=people,dc=domain,dc=net" write
by * none

Je viens d'avoir une idée, le ou=(.+) est censé me récupérer l'OU du nom de l'utilisateur (uid) qui contient son carnet d'adresse donc je vais mettre en dure les variable (.+) et $1 pour voir si çà passe avec un user en particuliers.
Avatar de l’utilisateur
darkukai
Major
Major
 
Messages: 72
Inscrit le: 07 Oct 2003 00:00
Localisation: lyon

Messagepar darkukai » 10 Jan 2007 16:13

Bonjour,
Je fais un petit ré-up de ma question ayant de nouveau éléments et donc de nouvelles interrogations.

Bon j'ai bien potassé les acl j'ai compris plein de choses et d'autres me reste encore obscure mais bon on avance :)

un petit topo sur mon annuaire

immaculee.net
|_OU=People
| |_uid=t.toto
|_OU=personal_addressbook
|_OU=t.toto

chaque utilisateur a une ou dans personal_adressbook ou il peut donc stocké son carnet d'adresse le but étant de donné les droit pour qu'ils puissent lire/écrire dans leurs ou mais pas celle des autres.


Alors voila j'ai refait mes ACL en respectant un ordre qui est censé permettre leur bon fonctionnement :

Code: Tout sélectionner
# ACL 1
# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only

access to attrs=userPassword
       by dn="cn=admin,dc=immaculee,dc=net" write
       by dn="cn=adminro,dc=immaculee,dc=net" read
       by anonymous auth
       by self write
       by * none

# ACL 2
# régit les accès au paramètres de horde
access to attrs=hordePrefs,impPrefs,mailforward,vacationActive,vacationInfo
       by self write
       by * read

# ACL 3
# allow user to create entries in own addressbook; no-one else can access it

# needs write access to the entries ENTRY attribute (ACL4) and the
entries CHILDREN (ACL3)
access to dn.regex="ou=personal_addressbook,cn=([^,]+),ou=people,dc=immaculee,dc=net$"
  attrs=children
by dn.regex,expand="cn=$1,ou=people,dc=immaculee,dc=net" write
by users none

# ACL 4
# allow one to create entries in its own addressbook; no-one else can access it
# needs write access to the entries ENTRY attribute (ACL4) and the
entries CHILDREN (ACL3)

access to dn.regex="ou=personal_addressbook,cn=([^,]+),ou=people,dc=immaculee,dc=net$"
  attrs=entry
by dn.regex,expand="cn=$1,ou=people,dc=immaculee,dc=net" write
by users none

# ACL 5
# allow access to all entries in own addressbook; no-one else can access it

access to dn.regex="ou=personal_addressbook,cn=([^,]+),ou=people,dc=immaculee,dc=net$"
  filter=(objectclass=inetorgperson)
by dn.regex,expand="cn=$1,ou=people,dc=immaculee,dc=net" write
by users none

# ACL 6
# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read


# ACL 7
# The admin dn has full write access, everyone else
# can read everything.
access to *
       by dn="cn=admin,dc=immaculee,dc=net" write
       by dn="cn=adminro,dc=immaculee,dc=net" read
       by * read




Le soucis c'est que çà devrait marcher mais j'ai toujours un : insufficient access error 50 quand j'essai de rentrer un contact dans mon adress book :(

mon ldaplog me donne ceci :

Code: Tout sélectionner
Jan 10 14:11:30 localhost slapd[4328]: slapd stopped.
Jan 10 14:11:30 localhost slapd[4362]: @(#) $OpenLDAP: slapd 2.2.23
(May 30 2005 08:52:42) $
^I@pulsar:/home/torsten/packages/openldap/openldap2.2-2.2.23/debian/build/servers/slapd
Jan 10 14:11:30 localhost slapd[4362]: daemon: IPv6 socket() failed
errno=97 (Address family not supported by protocol)
Jan 10 14:11:30 localhost slapd[4362]: bdb_db_init: Initializing BDB database
Jan 10 14:11:30 localhost slapd[4364]: slapd starting
Jan 10 14:11:35 localhost slapd[4366]: conn=0 fd=11 ACCEPT from
IP=127.0.0.1:38462 (IP=0.0.0.0:389)
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=0 BIND
dn="uid=m.ferber,ou=People,dc=immaculee,dc=net" method=128
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=0 BIND
dn="uid=m.ferber,ou=people,dc=immaculee,dc=net" mech=SIMPLE ssf=0
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=0 RESULT tag=97 err=0 text=
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=1 ADD
dn="cn=fabien,ou=m.ferber,ou=personal_addressbook,dc=immaculee,dc=net"
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=1 RESULT tag=105
err=50 text=[b]no write access to parent[/b]
Jan 10 14:11:35 localhost slapd[4367]: conn=0 op=2 UNBIND
Jan 10 14:11:35 localhost slapd[4367]: conn=0 fd=11 closed



A priori l'odre des ACL est bon, comme indiqué cela viendrai plus des droits sur le dossier parent de l'ou qui contient le carnet d'adresse. Cela dis je ne sais pas comment gérer les droits sur celles ci sachant que je ne veux pas que les utilisateurs puissent écrire dans toutes l'ou personal_addressbook.

Si quelqu'un a une idée ???

merci d'avance

nota : j'ai essayer d'intercaler cette acl juste après l'ACL 1 :
[code]
# ACL 1.1
# donne le droit d'écriture a tlm sur ou=persona_addressbook
access to dn="ou=personal_addressbook,dc=immaculee,dc=net"
by * write

mais j'ai exactement le même message d'erreur à l'ajout d'un contact et dans mon ldaplog, je suis un peu cours d'idée là :( :( :( help please
Avatar de l’utilisateur
darkukai
Major
Major
 
Messages: 72
Inscrit le: 07 Oct 2003 00:00
Localisation: lyon


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron