微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

openldap – 当试图做ldapadd得到这个错误时ldap_add:没有这样的对象(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=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

我的LDIF文件内容

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

原文地址:https://www.jb51.cc/bash/385374.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐