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