2

我正在尝试设置一个 LDIF 文件,该文件将向现有节点添加一个新的属性值。该属性是自定义对象类的强制属性。

这是 LDIF 文件“add.ldif”的内容:


dn: cn=hna,cn=Users,DC=lan,DC=test,DC=de
changetype: modify
add: objectclass
objectclass: MyCustomObjectClass
-
add: myCustomAttribute
myCustomAttribute: someValue
-

问题:当我尝试将其添加到 LDAP 服务器时

ldapmodify -h ... -D ... -w ... -x -f add.ldif

我收到错误消息

ldap_modify: Objectclass violation (65)
    additional info: 00002014: objectclass_attrs: attribute 'myCustomAttribute'
    on entry 'cn=hna,cn=Users,DC=lan,DC=test,DC=de' does not exist in the
    specified objectclasses

当我省略“myCustomAtribute”的“添加”时,当然会得到:

ldap_modify: Objectclass violation (65)
    additional info: 00002014: objectclass_attrs: at least one mandatory attribute
    ('myCustomAttribute') on entry 'cn=hna,cn=Users,DC=lan,DC=test,DC=de'
    wasn't specified!

知道我的方法有什么问题吗?

ldapmodify 来自 OpenLDAP;服务器是 Samba V4 LDAP。

4

1 回答 1

0

这应该有效:

dn: cn=hna,cn=Users,DC=lan,DC=test,DC=de
changetype: modify
add: objectclass
objectclass: MyCustomObjectClass
add: myCustomAttribute
myCustomAttribute: someValue

最后一行之后必须有一个空行。仅当您要执行单独的修改操作并使其成为原子操作时才需要“-”。(即全部工作或全部失败)。

由于添加 objectclass 要求 MUST 属性必须发生在相同的修改中。

顺便说一句,我注意到一些 ldapmodify 程序不能正确处理这些。

-吉姆

于 2014-03-26T12:07:39.733 回答