Ldap
ldap_add:違反約束 (19)
我在導入使用者
ldapadd
和ldif
文件時遇到問題。我得到的錯誤是:ldap_add: Constraint violation (19) additional info: structuralObjectClass: no user modification allowed
導入的使用者都是
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
ldif
文件導入如下:ldapadd -f import.ldif -xv -D "cn=drupal,ou=Apps,dc=example,dc=org" -h localhost -W
該
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
我已經測試了導入 LDAP 上存在或不存在的使用者,並且在任何一種情況下都會出現上述錯誤。
有人可以解釋問題的根源以及如何規避它嗎?
您是如何生成這些 LDIF 文件的?
structuralObjectClass
是 OpenLDAP 中的內部值之一,使用者(甚至管理員)通常無法修改這些值。從您的 LDIF中刪除這些行或使用(我打賭您使用 生成 LDIF 文件)
structuralObjectClass
導入條目。slapadd``slapcat
您需要刪除文件中的以下行
ldif
:structuralObjectClass: entryUUID: creatorsName: createTimestamp: entryCSN: modifiersName: modifyTimestamp: