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

Невозможно установить новую базу данных в OpenLDAP 2.4 с BDB в Debian

Я пытаюсь установить сервер 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 теперь работает нормально.