Ошибка обработчика ldap_add (80) Обработчик <olcModuleLoad> завершен с 1

8

Я пытаюсь следовать этому руководству, чтобы настроить базовый сервер LDAD (OpenLDAP) для аутентификации с помощью cleint, но я застрял на шаге, где я добавляю внутреннюю конфигурацию.

Я создал свой файл backend.ldif, как указано, и пытаюсь добавить его с помощью:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Но я получаю:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcModuleLoad> handler exited with 1

Полный LDIF:

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
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=mydomain,dc=us" 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=mydomain,dc=us" write by * read

Любые предложения о том, как устранить неполадки? Я ничего не знаю о серверах LDAP, это мой первый.

ОБНОВИТЬ:

Я начал заново с новой установки сервера 11.04.

Я сделал следующее:

hostname ldap.mycompany.com
nano /etc/hosts (set to ldap.mycompany.com)
nano /etc/hostname (set to ldap.mycompany.com)
sudo apt-get install slapd ldap-utils

Я пытаюсь загрузить первую схему:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif

Я получил:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: olcAttributeTypes: Duplicate attributeType: "0.9.2342.19200300.100.1.2"

Я попробовал команду, которая была предложена ниже:

root@ldap:~# cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
structuralObjectClass: olcModuleList
entryUUID: 3bedbe64-e4b2-1030-832a-17900c7b3644
creatorsName: cn=config
createTimestamp: 20120206020131Z
entryCSN: 20120206020131.785958Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120206020131Z

Но на этот раз он не жалуется на модуль, а жалуется на «Duplicate attributeType».

Поэтому мне нужна команда, которая говорит "показать загруженные типы атрибутов", чтобы увидеть, есть ли уже "косинус" в списке?

Хорошо, я собираюсь предположить, что:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

не нужны, так как все продукты имеют одинаковую ошибку.

Поэтому я перешел к добавлению ~ / backend.ldif. Я удалил строки загрузочной модели сверху, так как модуль, кажется, уже загружен.

Теперь, когда я пытаюсь добавить:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Я получил:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcDatabase=hdb,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcSuffix> namingContext "dc=mycompany,dc=us" already served by a preceding hdb database

Что не имеет смысла, так как это единственная база данных на компьютере, и это первая запись, которую я добавляю в нее.

Ник
источник

Ответы:

6

Сообщение об ошибке указывает, что back_hdbмодуль уже включен в конфигурацию. Вы можете проверить это с помощью команды

cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif

Если это включает строки, подобные следующим, это уже включено:

olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb 

Если это так, просто удалите первые шесть строк из вашей backend.ldifи попробуйте снова.

Если вы хотите начать с нуля, вы можете использовать команду

apt-get purge slapd ldap-utils

избавиться от полной установки ldap, включая все файлы данных.

После этого вам нужно будет переустановить OpenLDAP с помощью соответствующей команды

apt-get install slapd ldap-utils

Кстати, я только следовал этому руководству (используя все значения по умолчанию из их скрипта), и это отлично работало на недавно созданной Lucid VM.


редактировать

ОК, в своем другом посте вы говорили о 10.04. На самом деле, автоконфигурация в 11.04 для slapdнамного лучше, чем в 10.04. То, что он делает для вас, - это все в учебнике, касающееся файлов схемы, файла backend.ldif и даже части из внешнего интерфейса: вы можете удалить следующие строки из fronted.ldif и попробовать продолжить оттуда:

# Create top-level object in domain
dn: dc=tuxnetworks,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Tuxnetworks
dc: Tuxnetworks
description: LDAP Server 

# Admin user.
dn: cn=admin,dc=tuxnetworks,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: mypassword 

Еще один совет: внутренняя конфигурация OpenLDAP ( cn=config) - это не что иное, как набор файлов LDIF в структуре файловой системы, эквивалентной структуре LDAP. Вы можете просмотреть его самостоятельно /etc/ldap/slapd.d. У 10.04 был минимум для slapdработы, а 11.04 все подготовил, чтобы вы могли сразу начать.

Свен
источник
Я собираюсь попытаться сделать все это снова. Я делаю это на 11.04 ВМ. Может быть, есть что-то несовместимое в новой версии? Или в версии OpenLDAP, поставляемой с 11.04, этот модуль уже загружен, а в 10.04 нет? Так что, если я установлю ldap и облажусь, запуск "apt-get purge slapd ldap-utils" будет таким же, как если бы я начинал с чистой установки? Это нигде не оставляет "мусора"?
Ник
Хорошо, я попытался снова с новой установкой и получил "olcAttributeTypes: Duplicate attributeType" при попытке загрузить схему "косинус". Пожалуйста, смотрите выше для полного сообщения.
Ник
Смотрите мое редактирование, это становится длинным для комментария.
Свен
Я получил работу LDAP, используя 10.04 и снова следуя инструкциям. Я отмечаю как решенный, так как он отвечает на заглавный вопрос. Спасибо!
Ник
1

добавить .la в конец back_hdb

LDIF теперь должен прочитать

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb.la

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
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=mydomain,dc=us" 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=mydomain,dc=us" write by * read

для объяснения: http://ubuntuforums.org/archive/index.php/t-1594138.html

Sudh33ra
источник