Я пытаюсь установить сервер openldap (slapd) на экземпляр Debian EC2. Я выполнил все инструкции, которые смог найти, и использую рекомендуемый подход slapd-config к настройке. Кажется, все в порядке, за исключением того, что по какой-то причине он не может создать мою новую базу данных.
ldap.conf.bak (переименован, чтобы гарантировать, что он не используется):
##########
# Basics #
##########
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
# modulepath /usr/local/libexec/openldap
moduleload back_bdb.la
database config
#rootdn "cn=admin,cn=config"
rootpw secret
database bdb
suffix "dc=example,dc=com"
rootdn "cn=manager,dc=example,dc=com"
rootpw secret
directory /usr/local/var/openldap-data
########
# ACLs #
########
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to *
by self write
by * none
Когда я запускаю slaptest, он жалуется, что не может найти файл id2entry.bdb:
root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d
bdb_db_open: database "dc=example,dc=com": db_open(/usr/local/var/openldap-data/id2entry.bdb) failed: No such file or directory (2).
backend_startup_one (type=bdb, suffix="dc=example,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
Использование ключа -u, конечно, работает. Но это просто создает конфигурацию. Это не решает основную проблему:
root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d -u
config file testing succeeded
Заглянув в каталог базы данных, вы обнаружите, что основные файлы там (с правом собственности после ручного chown), но файл dbd не был создан:
root@server:/etc/ldap# ls -al /usr/local/var/openldap-data
total 4328
drwxr-sr-x 2 openldap openldap 4096 Mar 1 15:23 .
drwxr-sr-x 4 root staff 4096 Mar 1 13:50 ..
-rw-r--r-- 1 openldap openldap 3080 Mar 1 14:35 DB_CONFIG
-rw------- 1 openldap openldap 24576 Mar 1 15:23 __db.001
-rw------- 1 openldap openldap 843776 Mar 1 15:23 __db.002
-rw------- 1 openldap openldap 2629632 Mar 1 15:23 __db.003
-rw------- 1 openldap openldap 655360 Mar 1 14:35 __db.004
-rw------- 1 openldap openldap 4431872 Mar 1 15:23 __db.005
-rw------- 1 openldap openldap 32768 Mar 1 15:23 __db.006
-rw-r--r-- 1 openldap openldap 2048 Mar 1 15:23 alock
(обратите внимание, что, поскольку я делаю это как root, мне также пришлось изменить владельца некоторых файлов, созданных с помощью slaptest)
Наконец, я могу запустить сервис slapd, но он умирает при попытке (текст из системного журнала):
Mar 1 15:06:23 server slapd[21160]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
Mar 1 15:06:23 server slapd[21160]: config error processing olcDatabase={1}bdb,cn=config:
Mar 1 15:06:23 server slapd[21160]: slapd stopped.
Mar 1 15:06:23 server slapd[21160]: connections_destroy: nothing to destroy.
Я вручную проверил файл olcDatabase = {1} bdb, и моему любителю он выглядит нормально. Все мои конкретные конфиги есть. К сожалению, системный журнал не сообщает о конкретной ошибке в этом случае (если бы это была ошибка разрешения файла, он бы сказал). Я пробовал удалить и переустановить slapd, изменить разрешения, погуглить, но я отключился. Любой гений OpenLDAP будет очень признателен!
Несколько часов назад у меня была такая же проблема. Я использую OpenBSD 5.0 с OpenLDAP 2.4.25. Я понял, что это не ошибка LDAP, а ошибка Berkeley DB. Я нашел подсказки, указывающие на db_recover
инструмент для решения этой проблемы. Но моя база данных была пуста, как и ваша, я думаю.
Поэтому я просто создал другую базу данных, сделал резервную копию всех файлов (/var/openldap-data
), но DB_CONFIG, удалил все файлы, кроме DB_CONFIG, и перезапустил демон. После этого мой OpenLDAP теперь работает нормально.