Ошибка “ldap_add: Naming violation (64)” при настройке OpenLDAP

Вопрос или проблема

Я следую руководству по серверу Ubuntu для настройки OpenLDAP на сервере Ubuntu 10.04, но не могу заставить его работать.

Когда я пытаюсь использовать sudo ldapadd -x -D cn=admin,dc=don,dc=com -W -f frontend.ldif, я получаю следующую ошибку:

Введите пароль LDAP: <ввел 'secret' как пароль>
добавление новой записи "dc=don,dc=com"
ldap_add: Нарушение именования (64)
      дополнительная информация: значение одно-именованного атрибута 'dc' конфликтует со значением, присутствующим в записи

Снова, когда я пытаюсь сделать то же самое, я получаю следующую ошибку:

root@avy-desktop:/home/avy# sudo ldapadd -x -D cn=admin,dc=don,dc=com -W -f frontend.ldif
Введите пароль LDAP:
ldap_bind: Неверные учетные данные (49)

Вот файл backend.ldif:

# Загрузка модулей динамической поддержки
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Настройки базы данных
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=don,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=don,dc=com
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=don,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=don,dc=com" write by * read

Файл frontend.ldif:

# Создание объекта верхнего уровня в домене
dn: dc=don,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: Example
description: LDAP Example 

# Пользователь-администратор.
dn: cn=admin,dc=don,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret

dn: ou=people,dc=don,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=don,dc=com
objectClass: organizationalUnit
ou: groups

dn: uid=john,ou=people,dc=don,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 1000
gidNumber: 10000
userPassword: password
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: [email protected]
postalCode: 31000
l: Тулуза
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress:
initials: JD

dn: cn=example,ou=groups,dc=don,dc=com
objectClass: posixGroup
cn: example
gidNumber: 10000

Кто-нибудь может мне помочь?

Для меня ваш файл frontend.ldif кажется недействительным, где dn указано как dn: dc=don,dc=com (поэтому rdn – dc=don), но вы продолжаете использовать dc: Example позднее. Я думаю, вы попытались использовать учебник, но забыли изменить некоторые части вашего файла ldif, если dn правильный, вы должны использовать dc: don (то же самое, что и в dn). Также вы упоминаете backend.ldif (который кажется изменяет некоторые настройки через бэкэнд конфигурации slapd) и frontend.ldif, но вы показываете только пример, что вы пытаетесь добавить записи из frontend.ldif, а не backend.ldif.

Ответ или решение

Ошибка «ldap_add: Naming violation (64)» возникает при конфигурировании OpenLDAP и свидетельствует о нарушении правил именования в LDAP. Давайте разберем эту проблему детально, чтобы вы могли эффективно ее устранить.

Теория (Theory)

LDAP (Lightweight Directory Access Protocol) — это протокол прикладного уровня для доступа к службам каталогов. При работе с OpenLDAP необходимо строго следовать схемам (schemas) и правилам именования (naming conventions).

Причины ошибки:

  • Нарушение именования: Ошибка 64 указывает на проблему с именами, где атрибуты конфликтуют или противоречат друг другу.
  • Несоответствие между dn и атрибутами: Distinguished Name (DN) конструкции dc=example,dc=com должен соответствовать заданным атрибутам. Для каждого уровня иерархии необходимо обеспечивать соответствие имен.

Пример (Example)

В представленном вами файле frontend.ldif вы пытаетесь добавить запись с следующей структурой:

dn: dc=don,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: Example
description: LDAP Example 

Здесь наблюдается явное несоответствие: вы используете dc=don в DN, однако атрибут dc установлен как Example. Это и является причиной ошибки именования. Согласно правилам имени должна быть консистентность; значение DC в DN должно совпадать с атрибутом DC в записи.

Применение (Application)

Вот как вы могли бы решить эту проблему:

  1. Исправление файла frontend.ldif:

    • Замените dc: Example на dc: don:
    dn: dc=don,dc=com
    objectClass: top
    objectClass: dcObject
    objectclass: organization
    o: Example Organization
    dc: don
    description: LDAP Example 
  2. Проверка данных:

    • Убедитесь, что все DN и атрибуты соответствуют друг другу по всей иерархии, чтобы избежать разночтений.
  3. Учет пароля и доступов:

    • В логах ошибок также упоминается недействительный пароль (Invalid credentials (49)), что означает попытку аутентификации с неправильным паролем. Убедитесь, что пароль соответствует заданному в конфигурациях OpenLDAP.
  4. Обработка backend.ldif:

    • Убедитесь, что backend.ldif точно применен к вашей настройке. В случае необходимости перегрузите конфигурацию, чтобы убедиться в применении всех изменений.
  5. Проверка аутентификации:

    • Если аутентификация продолжает давать сбои, убедитесь в корректности формата и синтаксиса используемых учетных данных.
  6. Лог-файлы и журнал OpenLDAP:

    • Настройте более подробный уровень логирования для OpenLDAP, чтобы получить дополнительную информацию о возникающих проблемах.

Заключение

Итак, при конфигурировании OpenLDAP очень важны не только правильные файлы конфигурации, но и их точная синхронизация и согласованность данных. Советы, приведённые выше, должны помочь вам устранить проблему и правильно настроить ваш сервер LDAP. Убедитесь в том, что все схемы и данные, которые вы вводите, корректны и согласуются друг с другом на всех уровнях иерархии.

Оцените материал
Добавить комментарий

Капча загружается...