什么是ldapadd错误:“额外的信息:objectClass:价值#3无效每语法的意思?

我有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 

我正在尝试使用以下命令来configurationldap服务器:

 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 

我怀疑这是由于密码不正确,但我无法确定。 我曾在网上search过的匹配是“价值2”或“价值1” – 作为一个非ldap专家,我不知道这是否有任何区别。

谢谢,布鲁斯

这不是一个错误的密码,即Invalid credentials (49)

它是Invalid syntax (21) 。 具体来说,在objectClass的情况下, 你试图使用一个不存在的objectClassolcPPolicyConfig )。

OpenLDAP计算多属性值,其中objectClass是1,从0开始。这意味着您的ldapadd看起来像:

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

olcPPolicyConfig objectClass由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 

你的模块path可能不同,以上是CentOS7的正确path。