Я не понимаю, как настраивать пользователей и пароли на сервере OpenLDAP. То, что я описываю в этом вопросе, основано на чистой установке OpenLDAP 2.4 на Centos 7 (через yum).
После запуска slapd
я выполняю команду
[root@papp ~]# slapcat -n0 | grep olcRootDN
olcRootDN: cn=Manager,dc=my-domain,dc=com
Это говорит мне, что у нас уже есть пользователь root с dn cn = Manager, dc = my-domain, dc = com
. У этого пользователя пароль не установлен.
[root@papp ~]# slapcat -n0 | grep olcRootPW
Затем я пытаюсь установить пароль вручную:
[root@papp ~]# ldappasswd -H ldap://localhost -x -D "dn=Manager,dc=my-
domain,dc=com" -W -A -S
Old password: (empty)
Re-enter old password: (empty)
New password: password
Re-enter new password: password
Enter LDAP Password: (what is that?? I use empty)
ldap_bind: Invalid DN syntax (34)
additional info: invalid DN
Что дает мне неверный DN. Это почему ? Я не вижу недопустимого DN. Означает ли это, что я не могу использовать команду ldappasswd
для чистой установки OpenLDAP?
Затем я пытаюсь загрузить файл схемы
# /tmp/pass.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: password
[root@papp ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/pass.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
Теперь пароль установлен, что я могу подтвердить с помощью
[root@papp ~]# slapcat -n0 | grep olcRootPW
olcRootPW:: cGFzc3dvcmQ=
Однако поиск по-прежнему не работает
ldapsearch -D "cn=Manager,dc=my-domain,dc=com" -v -x -b '' -s base '(objectClass=*)' -w password
ldap_bind: Invalid credentials (49)
Я также пытался использовать apache directory studio для просмотра моего дерева LDAP, но я могу подключиться к ldap только без аутентификации. Как только я использую простую аутентификацию с dn = cn = Manager, dc = my-domain, dc = com
, я получаю ошибку аутентификации (недопустимые учетные данные).
Ну, первое, что нужно сделать для начала: не устанавливайте пароль в виде открытого текста, даже если конфигурация каким-то образом хэширует его. Сначала используйте slappasswd
. Во-вторых, вы не можете использовать ldappasswd
для диспетчера каталогов. В-третьих, я не уверен, но что-то мне подсказывает, что что-то еще неправильно сконфигурировано, и вы не объяснили, как вы изменили свой olcRootDN.
Я попытался повторить то, что вы сделали, но не смог воспроизвести те же ошибки или вопросы.
# yum install openldap-servers -y
# systemctl start slapd
# slappasswd
New password:
Re-enter new password:
{SSHA}piJmuKxgnMh7DVBOQtCgz3/httcjc4kP
# /tmp/manager.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=manager,dc=angelsofclockwork,dc=net
-
replace: olcRootPW
olcRootPW: {SSHA}piJmuKxgnMh7DVBOQtCgz3/httcjc4kP
# ldapmodify -QY EXTERNAL -H ldapi:/// -f /tmp/manager.ldif
# ldapsearch -D "cn=Manager,dc=bromosapien,dc=net" -v -x -b '' -s base '(objectClass=*)' -W -h localhost
ldap_initialize( ldap://localhost )
Enter LDAP Password:
filter: (objectClass=*)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectClass=*)
# requesting: ALL
#
#
dn:
objectClass: top
objectClass: OpenLDAProotDSE
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Возможно, вы захотите прочитать руководство, которое поможет вам пройти / понять шаги, которые вам необходимо предпринять. http://www.angelsofclockwork.net/wiki/centos/openldap.html