Ldap

ldap_add:違反約束 (19)

  • March 5, 2021

我在導入使用者ldapaddldif文件時遇到問題。我得到的錯誤是:

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: 

引用自:https://serverfault.com/questions/290264