Изменить место хранения данных LDAP

Я запускаю сервер openLDAP версии 2.4.40 на CentOS 7. LDAP будет настроен с помощью опции online conf (olc). Благодаря этому вопросу я знаю, что файлы базы данных slapd находятся в /var/lib/ldap.

Я пытаюсь запустить openLDAP сервер на linux box как раздел ОС только для чтения и другой раздел для постоянных данных. Я смогу установить и настроить openLDAP на разделе OS, но потеряю доступ к нему после настройки.

Вопрос: Возможно ли изменить место чтения/записи данных LDAP с /var/lib/ldap на место в разделе постоянных данных?

1
задан 23 May 2017 в 15:41
4 ответа

Я использовал для перемещения базы данных openldap по умолчанию после каждой новой настройки.

Действия, которые я выполняю, когда Я хочу переместить базу данных:

  • Остановить slapd
  • slapcat содержимое ветки cn = config в файле LDIF
  • Скопируйте / var / lib / ldap в любом месте
  • Убедитесь, что пользователю openldap принадлежит новый каталог и все файлы внутри
  • . Отредактируйте ранее экспортированный LDIF, чтобы изменить olcDbDirectory в новое место
  • Импортируйте LDIF slapadd -F /etc/ldap/slapd.d -b cn = config -l /path/to/file/file.ldif (Перед тем как сделать это, убедитесь, что /etc/ldap/slapd.d пуст.)
  • Убедитесь, что /etc/ldap/slapd.d и все его содержимое принадлежат автор openldap

  • Отредактируйте необходимую конфигурацию, чтобы позволить Slapd использовать этот новый каталог базы данных

. Например, с помощью apparmor отредактируйте файл /etc/apparmor.d/usr. sbin.slapd и добавьте следующие строки

/path/to/new/db/ r,
/path/to/new/db/** rwk,
  • Запустите slapd

Обычно это помогает. Это также способ резервного копирования конфигурации моих экземпляров openldap.

1
ответ дан 3 December 2019 в 20:24

Openldap, похоже, не поддерживает перемещение базы данных, файла базы данных после его создания. Openldap в настоящее время также не поддерживает удаление файлов БД.

Можно создать новый файл БД и определить его атрибут olcDbDirectory для пути в другом разделе.

dn: olcDatabase=bdb,cn=config
objectClass: olcBdbConfig
olcDatabase: bdb
olcDbDirectory: /partition/db/new-db-file
olcSuffix: dc=example,dc=net

Информация, найденная в главе 6.1.1.4.5 Добавление / удаление баз данных с использованием OLC

0
ответ дан 3 December 2019 в 20:24

Я прочитал ваш вопрос в двух частях:

  1. Вы хотите, чтобы операционная система была доступна только для чтения при сохранении доступа на запись к LDAP данным
  2. В качестве решения для #1, вы предлагаете хранить данные LDAP в месте, отличном от /var/lib/ldap

Хотя я подозреваю, что #2 возможно, у меня нет достаточного непосредственного опыта работы с OpenLDAP, чтобы обратиться к этому напрямую. Что я могу сделать, так это предложить альтернативное решение для #1. Тривиально смонтировать разностную часть диска в /var/lib/ldap, как с помощью команды mount, так и с помощью fstab. Это должно эффективно достичь вашей цели, независимо от того, работает ли OpenLDAP с этим нативно или нет. Вы также можете заменить папку /var/lib/ldap сим-ссылкой на желаемое место. Опять же, это обходит OpenLDAP и любую поддержку, которая встроена или не встроена в этот проект.

Наконец, вы также должны подумать о сохранении доступа на запись для определённых областей журнала. Методы, описанные в параграфе выше, могут работать и для перемещения мест расположения лог-файлов.

.
1
ответ дан 3 December 2019 в 20:24

Я сделал это успешно и использовал его в AWS, чтобы сохранить свои данные, когда мне нужно обновить образ машины. Если вы пересобирали OpenLDAP с помощью команды

slaptest -f slapd.conf -F slapd.d 

(да, мы все еще используем старый способ конфигурации, но запускаем его с помощью slapd.d — я работаю над этим) тогда все, что вам нужно сделать, это изменить расположение каталога в разделе конфигурации базы данных slapd.conf

directory /data/ldap

Создайте файл DB_CONFIG (от chown до ldap:ldap) в /data/ldap, потому что LDAP будет кричать, если он не там.

Как только вы запустите команду slaptest (slaptest -f slapd.conf -F slapd.d), ваша БД будет создана там.
Вам, вероятно, потребуется chown -R ldap:ldap /data и /etc/openldap после выполнения команды slaptest.

В случае успеха ваша БД или БД будут расположены в /data/ldap

Сохраните файл slapd.conf на внешнем разделе, чтобы вы могли импортировать его обратно, поднять другой сервер.

Если вам нужно запустить другой сервер, импортируйте файл slapd.conf и запустите команду slaptest. Вам нужно chown -R ldap:ldap в /data и /etc/openldap снова, но когда вы запускаете openldap, он должен выбрать БД на внешнем разделе.

В настоящее время это решение находится в стадии разработки, но оно хорошо помогает нам поддерживать OpenLDAP в облаке. Мы, очевидно, упростим этот неудобный процесс. Мы напишем все сценарии, возможно, переместим /etc/openldap на внешний диск с символической ссылкой и изменим slapd.d только с помощью ldifs вместо того, чтобы полагаться на на устаревшем slapd.conf, но пока он работает нормально.

1
ответ дан 20 April 2021 в 15:59

Теги

Похожие вопросы