Addendum :
Ldap is up and running with my configuration :
[root@ldap2]# ps auxwww | grep slapd
ldap 17190 0.0 1.1 426480 44384 ? Ssl Nov14 0:05
/usr/sbin/slapd -h ldap:/// -u ldap
And the directory sounds to respond exactly as I wish to usual queries.
However, here is a slapcat output :
[root@ldap2]/usr/sbin/slapcat -F /etc/openldap/slapd.d -l ldap-conf.ldif
PROXIED attributeDescription "OU" inserted.
PROXIED attributeDescription "DC" inserted.
olcSyncrepl: value #0: rootDN must be defined before syncrepl may be used
config error processing olcDatabase={1}bdb,cn=config: rootDN must be
defined before syncrepl may be used slapcat: bad configuration
directory!
I checked and that's true that the synchronisation doesn't work
properly anymore.
I had to reinserted this to have everything working well :
dn: olcDatabase={1}bdb,cn=config
OlcrootDN cn=Manager,dc=example,dc=fr
( no need for OlcrootPW)
--
Olivier
On Mon, Nov 14, 2011 at 5:15 PM, Olivier Guillard
<olivier(a)guillard.nom.fr> wrote:
> Hi there,
>
> I would like to have your feeling or advices about the following acl
> strategy for ldap administration issues (cn=config and actual directory
> administration). I have tested that and it sounds to work properly :
>
> My idea is to create two groups of people : one for those
> that administrates accounts in the directory, and another for
> those that are able to tune "cn=config"
>
> Basically, I have the following DIT : cn=config and dn: dc=example,dc=fr
>
> I have then created two "groupOfnames" (admin-ldap and
> admin-dir) and tuned ACL so that : directory admins can modify
> accounts and ldap admins can modify "slapd.d"
>
> I also have removed RootDN as well as RootPW both in :
> olcDatabase={0}config,cn=config
> as well as in
> olcDatabase={1}bdb,cn=config
>
> so that maintenance operation are not performed as "RootDN"
> anymore.
>
> ANY REACTIONS OR ADVICES ON THAT ?
>
>
> HARE IS HOW I HAVE TUNED THAT :
>
> # Entries for the two groupofnames :
>
> dn: cn=admin-dir,ou=system,dc=example,dc=fr
> cn: admin-dir
> member: uid=guillard,ou=people,dc=example,dc=fr
> member: uid=foo,ou=people,dc=example,dc=fr
> member: uid=shmol,ou=people,dc=example,dc=fr
> objectclass: groupOfNames
> objectclass: top
>
> dn: cn=admin-ldap,ou=system,dc=example,dc=fr
> cn: admin-ldap
> member: uid=guillard,ou=staff,ou=people,dc=example,dc=fr
> member: uid=pick,ou=staff,ou=people,dc=example,dc=fr
> objectclass: groupOfNames
> objectclass: top
>
>
> ### ACL :
>
> dn: olcDatabase={0}config,cn=config
> objectclass: olcDatabaseConfig
> olcaccess: {0}to * by group.exact="cn=admin-ldap,ou=system,dc=example
> ,dc=fr" write by * none
> ...
>
> ### And :
>
> dn: olcDatabase={1}bdb,cn=config
> objectclass: olcDatabaseConfig
> objectclass: olcBdbConfig
> ...
> olcaccess: {0}to dn.base="dc=example,dc=fr" by
> group.exact="cn=admin-ldap,ou=system,dc=example,dc=fr" write
> by group.exact="cn=admin-dir,ou=system,dc=example,dc=fr" read
> by dn.base="cn=replication,ou=system,dc=example,dc=fr" read
> by * search
> olcaccess: {1}to dn.one="dc=example,dc=fr"
> by group.exact="cn=admin-ldap,ou=system,dc=example,dc=fr" write
> by group.exact="cn=admin-dir,ou=system,dc=example,dc=fr" read
> by dn.base="cn=replicator,ou=system,dc=example,dc=fr"
> read by users search
> by anonymous auth
>
> ### then :
> olcaccess: {2}to dn.subtree="ou=system,dc=example,dc=fr"
> by group.exact="cn=admin-ldap,ou=system,dc=example,dc=fr" write
> by dn.base="cn=replicator,ou=system,dc=example,dc=fr" read by * none
>
> ### and :
> olcaccess: {3}to dn.subtree="dc=example,dc=fr"
> attrs=userPassword,shadowLastChange,loginShell
> by group.exact="cn=admin-annuaire,ou=system,dc=example,dc=fr" write
> by self write by dn.base="cn=replicator,ou=system,dc=example,dc=fr"
> read by users auth by anonymous auth
>
> ### finally :
> olcaccess: {4}to dn.subtree="dc=example,dc=fr"
> by group.exact="cn=admin-annuaire,ou=system,dc=example,dc=fr"
> write by dn.base="cn=replicator,ou=system,dc=example,dc=fr"
> read by users read by anonymous read
>