Openldap

ldapadd 錯誤是什麼意思:“附加資訊:objectClass:值 #3 每個語法無效是什麼意思?

  • May 14, 2015

我有 ldif

dn: olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config
objectClass: top
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=local
olcPPolicyHashCleartext: TRUE

dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: top
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: {1}memberof
olcMemberOfMemberAD: uniqueMember
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfRefInt: TRUE

我正在嘗試使用以下命令配置 ldap 伺服器:

ldapadd -Y EXTERNAL -H, ldapi:/// -f /tmp/overlays.ldif
The error I'm getting is:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #3 invalid per syntax

我懷疑這是由於密碼不正確,但我無法確定。我在網上搜尋的點擊量是“value #2”或“value #1”——作為非 ldap 專家,我不知道這是否有什麼不同。

謝謝,布魯斯

這不是一個錯誤的密碼,即Invalid credentials (49).

它是Invalid syntax (21)。具體來說,在 objectClass 的情況下,您正在嘗試使用不存在的 objectClass ( olcPPolicyConfig)。

OpenLDAP 計算多屬性值,其中 objectClass 是一個,從 0 開始。這意味著您的 ldapadd 看起來像:

value#0: top  
value#1: olcConfig  
value#2: olcOverlayConfig  
value#3: olcPPolicyConfig

**olcPPolicyConfigobjectClass 由 libtool 庫提供,ppolicy.la**一般需要作為模組載入。對於memberOf大多數其他疊加層也是如此。

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// <<EOF
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: ppolicy.la

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: memberof.la
EOF

您的模組路徑可能不同,以上為 CentOS7 的正確路徑。

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