У меня есть 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, вы пытаетесь использовать объектный класс, которого не существует (olcPPolicyConfig
).
OpenLDAP считает значения с несколькими атрибутами, одним из которых является objectClass, начиная с 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.