我最近在 Solaris-10 上安装了 OpenLDAP。无论使用 slapadd、ldapadd 还是 ldapmodify,我都能建立根节点和子节点,但当我尝试在 inetorgperson 下为某个人添加条目时,命令会挂起。这是我当前的 slapd.conf 文件:
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
loglevel -1
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=myorg,dc=org"
rootdn "cn=Manager,dc=myorg,dc=org"
rootpw secret
directory /usr/local/var/myorg.org
index objectClass eq
index cn,sn,mail eq,sub
index departmentNumber eq
cachesize 10000
checkpoint 128 15
这是我当前尝试使用的 .ldif 文件:
dn: dc=myorg,dc=org
dc: myorg
objectClass: dcObject
objectClass: organizationalUnit
ou: Myorg Dot Org
dn: ou=people,dc=myorg,dc=org
ou:people
objectClass: organizationalUnit
dn: cn=Jerry Carter,ou=people,dc=myorg,dc=org
objectClass: inetOrgPerson
cn: Jerry Carter
sn: Carter
这是我最近尝试过的 ldap 命令:
ldapadd -x -v -d -1 -D "cn=Manager,dc=myorg,dc=org" \
-f /ldif/top.ldif -w secret
.ldif 文件中的前两个条目成功,但最后一个条目挂起。以下消息循环重复出现:
** ld 805b7d0 Outstanding Requests:
* msgid 2, origid 2, status InProgress
outstanding referrals 0, parent count 0
ld 805b7d0 request count 1 (abandoned 0)
** ld 805b7d0 Response Queue:
Empty
ld 805b7d0 response count 0
ldap_chkResponseList ld 805b7d0 msgid 2 all 1
ldap_chkResponseList returns ld 805b7d0 NULL
ldap_int_select
ldap_result ld 805b7d0 msgid 2
wait4msg ld 805b7d0 msgid 2 (timeout 100000 usec)
wait4msg continue ld 805b7d0 msgid 2 all 1
** ld 805b7d0 Connections:
* host: localhost port: 389 (default)
refcnt: 2 status: Connected
last used: Wed Jan 19 12:21:51 2011
答案1
您的 LDAP 数据库可能已损坏。
尝试通过执行以下操作进行恢复:
- 停止 openldap
- 将整个文件夹复制到安全的地方
- 做一个 slapcat
- 删除数据库文件
- 运行 slapadd