如何用bdb后端configurationOpenLDAP 2.4?

看来OpenLDAP更喜欢使用slapd-config(5)而不是slapd.conf(5)。 但我不知道如何从slapd-config(5)开始,因为我不知道如何为它设置root密码。

所以我回来了使用slapd.conf(5),与以下/etc/ldap/slapd.conf

 database bdb suffix "dc=mycompany,dc=net" rootdn "cn=root,dc=mycompany,dc=net" rootpw secret directory /var/lib/ldap 

/etc/default/slapd交替使用/etc/ldap/slapd.conf而不是/etc/ldap/slapd.d 。 但是,它不能启动:

 sudo /etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: slapd - failed: Unrecognized database type (bdb) 

但是,我发现他们是一个bdb后端:

 $ ls -al /usr/lib/ldap/*bdb* lrwxrwxrwx 1 root 21 2010-12-02 18:50 back_bdb-2.4.so.2 -> back_bdb-2.4.so.2.5.6 -rw-r--r-- 1 root 182560 2010-11-20 02:29 back_bdb-2.4.so.2.5.6 -rw-r--r-- 1 root 1106 2010-11-20 02:28 back_bdb.la lrwxrwxrwx 1 root 21 2010-12-02 18:50 back_bdb.so -> back_bdb-2.4.so.2.5.6 

看起来你还没有加载这个模块。 取消注释/将下面的行插入到slapd.conf

 modulepath /usr/lib/ldap moduleload back_bdb.la 

我最近帮助我的同事做同样的事情,这就是我发现使用新的configuration后端的快速和简单的解决scheme(在干净的安装)。 这是在一个RHEL服务器上,但它应该是相似的,无论你正在运行。

停止slapd,并检查你的configuration数据库pipe理员DN +密码是

 [root@ldap openldap] cd /etc/openldap/slapd.d/cn\=config [root@ldap cn=config]# egrep "olcRootDN|olcRootPW" "olcDatabase={0}config.ldif" olcRootDN: cn=admin,cn=config olcRootPW: secret 

如果文件中不存在olcRootPW,请添加它,然后再次启动slapd。 您将需要一些ldif来创build新的bdb数据库

 [root@ldap ldap]# cat bdb.example.com.ldif # Load modules for database type dn: cn=module,cn=config objectclass: olcModuleList cn: module olcModuleLoad: back_bdb.la # Create directory database dn: olcDatabase=bdb,cn=config objectClass: olcDatabaseConfig objectClass: olcBdbConfig olcDatabase: bdb olcSuffix: dc=example,dc=com olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=example,dc=com olcRootPW: admin olcDbIndex: uid pres,eq olcDbIndex: cn,sn,mail pres,eq,approx,sub olcDbIndex: objectClass eq # Allow users to change their own password # Allow anonymous to authenciate against the password # Allow admin to change anyone's password olcAccess: to attrs=userPassword by self write by anonymous auth by dn.base="cn=admin,dc=example,dc=com" write by * none # Allow users to change their own record # Allow anyone to read directory olcAccess: to * by self write by dn.base="cn=admin,dc=example,dc=com" write by * read 

只需使用您的pipe理员dn +密码将其添加到ldapadd即可

 [root@ldap ldap]# ldapadd -h localhost -D "cn=admin,cn=config" -W -f bdb.example.com.ldif Enter LDAP Password: adding new entry "cn=module,cn=config" adding new entry "olcDatabase=bdb,cn=config" 

您可以像在slapd.conf中那样更改slapd.d文件中的configuration,尽pipe这不是推荐的。