我在slapd.conf中有以下条目
####################################################################### # ldbm and/or bdb database definitions ####################################################################### #backend hdb database bdb suffix "dc=example,dc=com" checkpoint 1024 15 rootdn "cn=Manager,dc=example,dc=com" rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx directory /var/lib/ldap index objectClass eq,pres ###################################################################### database monitor access to * by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.exact="cn=Manager,dc=com" read by * none
当我尝试写下面的命令
ldapadd -x -W -D "cn=Manager,dc=com" -f ldapuser100.ldif
我收到了以下错误:
adding new entry "uid=ldapuser100,ou=People,dc=com" ldap_add: No such object (32)
以下是调试:
oc_check_allowed type "structuralObjectClass" bdb_dn2entry("uid=ldapuser100,ou=people,dc=com") => bdb_dn2id("dc=example,dc=com") <= bdb_dn2id: get Failed: DB_NOTFOUND: No matching key/data pair found (-30988) bdb_add: parent does not exist send_ldap_result: conn=1 op=1 p=3 send_ldap_response: msgid=2 tag=105 err=32 ber_flush2: 22 bytes to sd 12 conn=1 op=1 RESULT tag=105 err=32 text= connection_get(12): got connid=1 connection_read(12): checking for input on id=1 ber_get_next ber_get_next: tag 0x30 len 5 contents: op tag 0x42,time 1379789891 ber_get_next conn=1 op=2 do_unbind conn=1 op=2 UNBIND connection_close: conn=1 sd=12 conn=1 fd=12 closed
dn: uid=ldapuser100,dc=com uid: ldapuser100 cn: ldapuser100 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}xxxxxxxxxxxxxxxxxxxxxxx shadowLastChange: 15969 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1400 gidNumber: 1400 homeDirectory: /exports/ldapuser100
我现在应该怎么做?
LDIF文件的内容必须对您的目录敏感.它看起来(虽然你还没有发布ldif文件中的内容,所以我真的无法分辨你想要做什么)就好像你试图在ou = People中添加一个用户,dc = example,dc = com,但要么ou = People不存在,要么你的目录的基本DN不存在.尝试将People OU添加到您的基础,然后再次添加此LDIF.
此外,通常,将密码哈希发布到Internet并不是最好的想法.
偶尔这个问题也是由于无法打开后端BDB数据库,尽管通常会在调试输出中给出一些指示.
您可能需要先导入更多东西.
像您的基本DN:
dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: example o: ExmapleCo
您可以省略objectClass = organization和o = ExampleCo(老实说我忘了).
另外,您的OU:
dn: ou=People,dc=com objectClass: organizationalUnit ou: People