私は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
パスワードが間違っていることが原因と思われますが、はっきりとはわかりません。私がウェブで検索したヒットは「値#2」または「値#1」でした-LDAPの専門家ではないので、これが何らかの違いをもたらすかどうかはわかりません。
ありがとう、ブルース
これは悪いパスワードではありません。つまり、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
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
モジュールパスは異なる場合がありますが、上記はCentOS7の正しいパスです。