Openldap
當試圖做 ldapadd 得到這個錯誤 ldap_add: No such object (32)
我的 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=example,dc=com" read by * none
當我嘗試編寫以下命令時
ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f ldapuser100.ldif
我收到以下錯誤:
adding new entry "uid=ldapuser100,ou=People,dc=example,dc=com" ldap_add: No such object (32)
以下是調試:
oc_check_allowed type "structuralObjectClass" bdb_dn2entry("uid=ldapuser100,ou=people,dc=example,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
我的 LDIF 文件的內容:
dn: uid=ldapuser100,ou=People,dc=example,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=example,dc=com objectClass: organizationalUnit ou: People