首先我要说的是,我已经使用 *nix 超过 20 年了;但是,我对 openldap 的经验很少。我曾在一台已经运行多年的服务器上运行过 openldap (slapd)。今天,我运行了 yum update,它更新了不少软件包,包括 openLDAP,现在我的 ldap 服务器无法启动。
以下是来自 rpm -qa 的 openldap 版本:
openldap-clients-2.4.40-12.el6.x86_64
openldap-servers-2.4.40-12.el6.x86_64
openldap-devel-2.4.40-12.el6.x86_64
compat-openldap-2.3.43-2.el6.x86_64
openldap-2.4.40-12.el6.x86_64
一旦 yum update 完成(没有错误),我们的 LDAP 服务器就不会运行。我尝试了一个简单的服务 slapd start,但失败了。slaptest -u 现在返回:
# slaptest -u
581260f7 config error processing cn={5}passwordSelfReset,cn=schema,cn=config:
slaptest: bad configuration file!
这也是我的 slapd.conf 文件(在 yum 更新之前有效):
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/passwordSelfReset.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/lib64/openldap
moduleload syncprov.la
moduleload unique.la
database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.exact="cn=admin,dc=am5up,dc=com" read
by * none
database bdb
suffix "dc=am5up,dc=com"
rootdn "cn=admin,dc=am5up,dc=com"
rootpw {SSHA}0yFFC0BTYdZLDRNtSHVz1I6YC4zJ3Z0AZ09123
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
overlay unique
unique_attributes mail
ServerID 1 "ldap://ldap.am5up.com"
overlay syncprov
syncprov-checkpoint 10 1
syncprov-sessionlog 100
更新:因此我删除了 /etc/openldap/slapd.d 中的所有内容,然后运行:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
现在 slaptest -u 成功返回,但 service slapd start 仍然失败。失败后我能找到的唯一日志条目在 /var/log/ldap.log 中:
@(#) $OpenLDAP: slapd 2.4.40 (May 10 2016 23:30:49) $#012#[email protected]:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd
答案1
对于遇到此问题的其他任何人 - 我已经找出了问题所在。在升级过程中,稍新的版本要求主机与配置文件中的服务器定义相匹配。
例如,您的 slapd.conf 文件中有一行如下:
ServerID 1 "ldap://myldapserver"
然后,您的启动脚本(或者当您启动 slapd 时)必须将主机定义为“ldap://myldapserver”。
这似乎很有道理;然而,通过今天的麻烦,我发现在我最初安装时添加的默认 /etc/init.d/slapd 文件将主机列为空白。因此,默认启动脚本基本上执行:
slapd -h "" -u <user> -g <group>
一旦我编辑了启动脚本以确保 slapd 上的 -h 开关与我的配置文件中的内容相匹配,一切都会重新开始正常工作。