ldap_add:违反约束 (19)

Max*_*Max 9 openldap ldap ldif ubuntu-10.04

我在导入用户ldapaddldif文件时遇到问题。我得到的错误是:

ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed
Run Code Online (Sandbox Code Playgroud)

导入的用户都是ou=People,dc=example,dc=org. LDAP 服务器已包含此基本 DN。

/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif文件包含以下 ACL 条目:

olcAccess: {2}to dn.base="ou=People,dc=example,dc=org" attrs=children by gr
 oup.exact="cn=Manager,ou=Roles,dc=example,dc=org" manage
Run Code Online (Sandbox Code Playgroud)

ldif文件被导入如下:

ldapadd -f import.ldif -xv -D "cn=drupal,ou=Apps,dc=example,dc=org" -h localhost -W
Run Code Online (Sandbox Code Playgroud)

cn=drupal,ou=Apps[...]条目是 的成员,cn=Manager,ou=Roles,dc=example,dc=org因此它应该具有足够的写入权限(因为管理是可用的最高权限级别)。

当我发出ldapadd命令时,导入在第一个ldif条目时失败。完整的命令输出是:

add objectClass:
    top
    person
    inetOrgPerson
add uid:
    John.Merrell
add mail:
    john.merrell@example.org
add cn:
    John D Merrell
add structuralObjectClass:
    inetOrgPerson
add entryUUID:
    65236c42-09b7-1020-9318-9fca7c043dfc
add creatorsName:
    cn=drupal,ou=Apps,dc=bidnetwork,dc=org
add createTimestamp:
    20110503095643Z
add userPassword:
    2678u8yyy
add givenName:
    John D
add sn:
    Merrell
add entryCSN:
    20110629121956.880164Z#000000#000#000000
add modifiersName:
    cn=drupal,ou=Apps,dc=bidnetwork,dc=org
add modifyTimestamp:
    20110629121956Z
adding new entry "mail=john.merrell@example.org,ou=People,dc=example,dc=org"
ldap_add: Constraint violation (19)
    additional info: structuralObjectClass: no user modification allowed
Run Code Online (Sandbox Code Playgroud)

我已经测试了 LDAP 上存在或不存在的导入用户,并且在任何一种情况下我都会收到上述错误。

有人可以解释问题的根源以及如何规避吗?

Jan*_*nen 12

你是如何生成这些 LDIF 文件的?structuralObjectClass是 OpenLDAP 中的内部值之一,用户(甚至管理员)通常无法修改这些值。

structuralObjectClass从您的 LDIF 中删除这些行或将条目导入回slapadd(我敢打赌,您使用 生成了 LDIF 文件slapcat)。

  • 如果你需要恢复一个用 `slapcat` 生成的 LDIF 文件,你应该使用 `slapadd`。`slapadd` 手册页说:“slapcat 的输出旨在用作 slapadd(8) 的输入。如果没有首先编辑,slapcat 的输出通常不能用作 ldapadd(1) 或其他 LDAP 客户端的输入输出。这种编辑通常包括将记录重新排序为高级一阶并删除无用户修改的操作属性。” (3认同)