看起来 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
答案1
看起来您还没有加载此模块。取消注释/插入以下行slapd.conf
:
modulepath /usr/lib/ldap
moduleload back_bdb.la
答案2
我最近帮助同事做了同样的事情,我发现这是使用新配置后端的快速简便的解决方案(在全新安装上)。这是在 RHEL 服务器上,但无论您运行什么都应该类似。
停止 slapd 并检查你的配置数据库管理员 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 来创建新的 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
然后使用 ldapadd 插入你的管理员 dn + 密码
[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.d 文件中的配置,就像您对 slapd.conf 所做的那样,尽管我们不推荐这样做。