首先,我不是 OpenLDAP 专家。
我slapd
在一台已经运行多年的服务器上运行了 openldap ( )。今天,我运行了它yum update
,它更新了很多软件包,包括 openldap 软件包。一旦完成(没有错误),我们的 LDAP 服务器就不再运行。我尝试了一个简单的service slapd start
(和/etc/init.d/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
read_config: no serverID / URL match found. Check slapd -h arguments.
slapd stopped.
connections_destroy: nothing to destroy.
slaptest
和都slaptest -u
成功了:
# slaptest
config file testing succeeded
# slaptest -u
config file testing succeeded
以下是 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
这也是我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
有人可以提供任何建议吗?
非常感激!
答案1
conf 和脚本中的主机 ID 必须匹配
对于遇到此问题的其他人:我已经解决了问题。在升级过程中,稍新的版本要求主机匹配配置文件中的服务器定义。
例如,在您的slapd.conf
文件中有这样一行:
ServerID 1 "ldap://myldapserver"
然后你的启动脚本(或者当你启动 slapd 时)你必须将主机定义为“ldap://myldapserver”。
这似乎是有道理的;然而,通过今天的麻烦,我了解到/etc/init.d/slapd
在初始安装期间添加的默认文件将主机列为空白。因此,默认启动脚本基本上执行:
slapd -h "" -u <user> -g <group>
一旦我编辑了启动脚本以确保-h
开关slapd
与我的配置文件中的内容匹配,一切就重新开始工作。