【问题标题】:Adding initial entries in openldap returns- ldap_add: No such object (32)在 openldap 中添加初始条目会返回 - ldap_add: No such object (32)
【发布时间】:2019-04-26 10:36:51
【问题描述】:

我正在尝试在 ldap 中添加两个条目,就在另一个条目的下方。但它不让我添加。错误- 添加新条目“dc=R2D2” ldap_add: 没有这样的对象 (32) 附加信息:无法添加条目“dc=R2D2”,因为其父条目“null”在服务器中不存在。

这是一个运行在 Feora29 上的新的 openLDAP 服务器。我已经尝试对我的 ldif 文件进行许多修改,但它仍然无法正常工作。 LDAP 预期结构: dc=R2D2 -> o=TD

我在第 4 行添加了 objectClass: country 因为它说: 添加新条目“dc=R2D2” ldap_add:对象类违规 (65) 附加信息:无法添加条目“dc=R2D2”,因为它违反了提供的架构:该条目没有结构对象类。

这是我试图通过 ldapadd 添加的 ldif

dn: dc=R2D2
dc: R2D2
objectClass: dcObject
objectClass: country 
objectClass: top
c=DE

dn: o=TD,dc=R2D2
o: TD
objectClass: organization
objectClass: top

【问题讨论】:

  • 没有看到数据库定义就无法回答;与java 无关;和题外话。
  • @user207421 仅供参考,我没有添加任何数据库定义。只有 openldap 自带的默认值
  • 堆栈溢出是否仅限于 Java?不,当然可以回答。
  • @MichaelStröder OP 使用了 Java 标签。我删除了它。这不是一个编程 问题,因此是题外话。没有数据库定义,这是无法回答的。

标签: ldap openldap


【解决方案1】:

添加操作失败返回的 LDAP 结果代码 noSuchObject (32) 表示未找到父条目。

如果dc=R2D2 确实是要添加的条目的完整 DN,那么您必须使用此特定 DN 作为数据库后缀来定义一个数据库。

对于静态 OpenLDAP 配置方法,如下所示:

[..]
database mdb

suffix dc=R2D2
[..]

另请参阅:OpenLDAP Software 2.4 Administrator's Guide

【讨论】:

  • 如果那是完整的根 DN,它根据数据库的定义已经存在,无法添加。您只能添加根 DN 的下属。
  • 废话!您在 OpenLDAP 配置中声明了一个数据库,当然您必须为该数据库添加根条目。
【解决方案2】:

我猜这是因为您的 ldif 在第 4 行有一个不必要的空格字符(在“country”之后,如“country”)。

我已经能够使用以下“国家”后没有不必要空格字符的 ldif 成功执行 ldapadd 命令:

dn: dc=R2D2
dc: R2D2
objectClass: dcObject
objectClass: country
objectClass: top
c: DE

dn: o=TD,dc=R2D2
o: TD
objectClass: organization
objectClass: top

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多