Вопрос или проблема
Информация:
Я установил ldap-utils
и slapd
, во время установки slapd, с помощью диалога ncurses
я ввел пароль администратора.
Затем я изменил его с помощью
ldapmodify -Q -Y EXTERNAL -H ldapi:/// << E0F
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}qUoTRPwppaedqHQTgYOPYWokr3SiXjbK
E0F
Но с ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f ./users.ldif
я получаю следующие сообщения:
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
Кстати, у меня нет slapd.conf
.
Как можно аутентифицироваться через программы LDAP?
ОБНОВЛЕНИЕ:
root@debian:~# cat /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}mdb.ldif
# АВТОГЕНЕРИРУЕМЫЙ ФАЙЛ - НЕ РЕДАКТИРУЙТЕ!! Используйте ldapmodify.
# CRC32 73bfb3a8
dn: olcDatabase={1}mdb
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 10bd0d0a-82d1-103f-92a4-058be6d2a441
creatorsName: cn=admin,cn=config
createTimestamp: 20250219054944Z
olcRootPW:: MTIzMTIzMTIz
entryCSN: 20250219060430.002303Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20250219060430Z
.
Ответ или решение
Ошибка "ldap_bind: Invalid credentials (49)" предполагает, что предоставленные учетные данные для авторизации в LDAP неверны. Это может быть связано с некорректным именем пользователя или паролем, недостаточными правами доступа либо несоответствующим DN (Distinguished Name). Давайте рассмотрим возможные причины и пути их решения.
Теоретическая часть
В LDAP (Lightweight Directory Access Protocol) различие между успешным и неуспешным подключением часто связано с учетными данными, такими как имя пользователя и пароль. Ошибка 49 говорит о том, что связка этих данных не подтверждена сервером. Причины могут включать в себя неправильный пароль после его изменения, неверную строку Distinguished Name (DN), или же изменения на сервере, которые сделали учетные данные устаревшими или некорректными.
Пример
В предоставленной информации несколько ключевых моментов:
-
Изменение пароля администратора происходит с использованием команды
ldapmodify
, где применяется новый пароль, хешированный алгоритмом SSHA. Однако из-за отсутствияslapd.conf
, используется подход на основе конфигураций LDIF. -
Проблемы с аутентификацией возникают при попытке добавить записи через
ldapadd
, что намекает на разницу в настройках, определяемых вolcDatabase
. -
DN и пароль. Используемый DN в команде
ldapadd
не соответствует DN в конфигурации базы данных LDAP.olcRootDN
указан какcn=admin,dc=nodomain
, в то время как в команде используетсяcn=admin,dc=example,dc=com
.
Применение
Чтобы исправить данное несоответствие и разрешить ошибку с аутентификацией, необходимо выполнить следующие шаги:
-
Проверка DN (Distinguished Name):
- Убедитесь, что DN в команде соответствует DN, указанному в базе данных. Из предоставленного примера, замените
dc=example,dc=com
наdc=nodomain
в командеldapadd
:ldapadd -x -D "cn=admin,dc=nodomain" -W -f ./users.ldif
- Убедитесь, что DN в команде соответствует DN, указанному в базе данных. Из предоставленного примера, замените
-
Проверка пароля:
- Перепроверьте, что вы вводите правильный пароль. Он должен совпадать с паролем, который вы установили с помощью команды
ldapmodify
. - Если вы не уверены, попробуйте изменить его снова, проверив, что команда прошла успешно и без ошибок. Пример изменения:
ldapmodify -Q -Y EXTERNAL -H ldapi:/// <<EOF dn: olcDatabase={1}mdb,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}новый_хешированный_пароль EOF
- Перепроверьте, что вы вводите правильный пароль. Он должен совпадать с паролем, который вы установили с помощью команды
-
Обновление конфигурации:
- Убедитесь, что все изменения в конфигурации применены правильно и что структура файла или базы данных не повреждена. Для этого можно использовать команду проверки конфигурации.
-
Проверка прав доступа:
- Убедитесь, что у DN, который вы используете для привязки, есть необходимые права для выполнения операций, которые вы планируете (например, доступ к добавлению или модификации записей).
После выполнения указанных шагов, пробуйте снова выполнить команду ldapadd
. Если ошибка все еще присутствует, следует внимательно посмотреть журналы slapd
для получения дополнительной информации, которая может указать на более специфические проблемы.
Кроме того, убедитесь, что сервер slapd
работает корректно и что соединение с ним не блокируется файерволом или другими сетевыми настройками. Это также может повлиять на процесс аутентификации и обмена данными.
Эти шаги должны помочь в устранении проблемы с ошибкой "ldap_bind: Invalid credentials (49)" при работе с LDAP.