ldapadd 错误是什么意思:“附加信息:objectClass:value #3 invalid per syntax 是什么意思?

Bru*_*ker 6 openldap ldif

我有 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
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下命令来配置 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
Run Code Online (Sandbox Code Playgroud)

我怀疑是因为密码不正确,但我不能确定。我在网上搜索的点击次数是“值 #2”或“值 #1”——作为非 ldap 专家,我不知道这是否有什么不同。

谢谢,布鲁斯

841*_*104 9

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

它是Invalid syntax (21)。具体来说,在 objectClass 的情况下,您尝试使用不存在的 objectClass ( olcPPolicyConfig)。

OpenLDAP 计算多属性值,其中 objectClass 为 1,从 0 开始。这意味着您的 ldapadd 如下所示:

value#0: top  
value#1: olcConfig  
value#2: olcOverlayConfig  
value#3: olcPPolicyConfig
Run Code Online (Sandbox Code Playgroud)

olcPPolicyConfig对象类是由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
Run Code Online (Sandbox Code Playgroud)

您的模块路径可能不同,以上是 CentOS7 的正确路径。