Назад | Перейти на главную страницу

ldap_add error (80) <olcmoduleload> обработчик вышел с 1</olcmoduleload>

Я пытаюсь следовать этот учебник по настройке базового сервера 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. Я удалил строки load modeule сверху, так как модуль кажется уже загруженным.

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

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

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

Сообщение об ошибке указывает, что 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.


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

Хорошо, в другом посте вы говорили о 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 подготовил все, чтобы можно было сразу начать.

добавить .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