我正在尝试在 Debian EC2 实例上安装 openldap 服务器 (slapd)。我已遵循我能找到的所有说明,并使用推荐的 slapd-config 方法进行配置。一切似乎都很好,只是出于某种原因它无法创建我的新数据库。
ldap.conf.bak(已重命名以确保未被使用):
##########
# Basics #
##########
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
# modulepath /usr/local/libexec/openldap
moduleload back_bdb.la
database config
#rootdn "cn=admin,cn=config"
rootpw secret
database bdb
suffix "dc=example,dc=com"
rootdn "cn=manager,dc=example,dc=com"
rootpw secret
directory /usr/local/var/openldap-data
########
# ACLs #
########
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to *
by self write
by * none
当我在其上运行 slaptest 时,它抱怨说找不到 id2entry.bdb 文件:
root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d
bdb_db_open: database "dc=example,dc=com": db_open(/usr/local/var/openldap-data/id2entry.bdb) failed: No such file or directory (2).
backend_startup_one (type=bdb, suffix="dc=example,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
当然,使用 -u 开关可以工作。但这只是创建了配置。它并不能解决根本问题:
root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d -u
config file testing succeeded
查看数据库目录,基本文件在那里(手动 chown 后具有正确的所有权),但未创建 dbd 文件:
root@server:/etc/ldap# ls -al /usr/local/var/openldap-data
total 4328
drwxr-sr-x 2 openldap openldap 4096 Mar 1 15:23 .
drwxr-sr-x 4 root staff 4096 Mar 1 13:50 ..
-rw-r--r-- 1 openldap openldap 3080 Mar 1 14:35 DB_CONFIG
-rw------- 1 openldap openldap 24576 Mar 1 15:23 __db.001
-rw------- 1 openldap openldap 843776 Mar 1 15:23 __db.002
-rw------- 1 openldap openldap 2629632 Mar 1 15:23 __db.003
-rw------- 1 openldap openldap 655360 Mar 1 14:35 __db.004
-rw------- 1 openldap openldap 4431872 Mar 1 15:23 __db.005
-rw------- 1 openldap openldap 32768 Mar 1 15:23 __db.006
-rw-r--r-- 1 openldap openldap 2048 Mar 1 15:23 alock
(请注意,因为我以 root 身份执行此操作,所以我还必须更改 slaptest 创建的某些文件的所有权)
最后,我可以启动 slapd 服务,但是它在尝试过程中终止了(来自系统日志的文本):
Mar 1 15:06:23 server slapd[21160]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
Mar 1 15:06:23 server slapd[21160]: config error processing olcDatabase={1}bdb,cn=config:
Mar 1 15:06:23 server slapd[21160]: slapd stopped.
Mar 1 15:06:23 server slapd[21160]: connections_destroy: nothing to destroy.
我手动检查了 olcDatabase={1}bdb 文件,以我的业余眼光来看,它看起来不错。我的所有特定配置都在那里。不幸的是,在这种情况下,系统日志没有报告特定错误(如果是文件权限错误,它会说)。我试过卸载并重新安装 slapd、更改权限、用谷歌搜索,但都束手无策。任何 OpenLDAP 天才都将不胜感激!
答案1
几个小时前我也遇到了同样的问题。我使用的是 OpenBSD 5.0 和 OpenLDAP 2.4.25。我发现这不是 LDAP 的错误,而是 Berkeley DB 的错误。我找到了一些帮助,指出了db_recover
解决此问题的工具。但我的数据库是空的,我认为你的数据库也是空的。
因此,我简单地创建了另一个数据库,备份了/var/openldap-data
除 DB_CONFIG 之外的所有文件 (),删除了除 DB_CONFIG 之外的所有文件,然后重新启动了守护进程。 此后,我的 OpenLDAP 运行良好。