slapd : тип атрибута не определен

Вопрос или проблема

Я пытаюсь настроить конфигурацию slapd на новом сервере.
Я сделал это так же, но это было, вероятно, два года назад и в немного другой среде (сейчас я на Debian, а раньше работал на CentOS).

У меня есть конфигурационный файл в формате ldif, и я пытаюсь выполнить :

slapadd -n 0 -F /etc/ldap/slapd.d -l /root/server_slapd_config.ldif

И я получаю

5c75466b <= str2entry: str2ad(olcDbCacheSize): тип атрибута
не определен

slapadd: не удалось разобрать запись (строка=2087)

Странно то, что я не смог понять, почему я получаю эту ошибку, так как olcDbCacheSize определен в моем server_slapd_config.ldif

Вот строки в моем server_slapd_config.ldif :

1)

olcObjectClasses: ( OLcfgDbOc:1.1 NAME 'olcBdbConfig' DESC 'Конфигурация bdb'
 SUP olcDatabaseConfig STRUCTURAL MUST olcDbDirectory MAY ( olcDb
CacheSize $ olcDbCheckpoint $ olcDbConfig $ olcDbCryptFile $ olcDbCryptKey 
 $ olcDbNoSync $ olcDbDirtyRead $ olcDbIDLcacheSize $ olcDbIndex $ olcDbLine
arIndex $ olcDbLockDetect $ olcDbMode $ olcDbSearchStack $ olcDbShmKey $ ol
cDbCacheFree $ olcDbDNcacheSize $ olcDbPageSize ) )

2)

olcAttributeTypes: ( OLcfgDbAt:1.1 NAME 'olcDbCacheSize' DESC 'Размер кеша запи
сей' SYNTAX OMsInteger SINGLE-VALUE )

3)

dn: olcDatabase={1}bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
[пропущено]
olcDbCacheSize: 1000

Итак, DbCacheSize объявлен в атрибутах olcBdbConfig.

Есть olcAttributeTypes для DbCacheSize

И dn: olcDatabase={1}bdb,cn=config имеет “objectClass: olcBdbConfig

Почему я получаю “тип атрибута не определен”?

Некоторая дополнительная информация.

Система : Debian 9 (Stretch)

# dpkg -l | grep -i ldap
ii  ldap-utils                    2.4.44+dfsg-5+deb9u2           amd64        Утилиты OpenLDAP
ii  ldapscripts                   2.0.7-2                        all          Добавление и удаление пользователей и групп (хранятся в каталоге LDAP)
ii  libldap-2.4-2:amd64           2.4.44+dfsg-5+deb9u2           amd64        Библиотеки OpenLDAP
ii  libldap-common                2.4.44+dfsg-5+deb9u2           all          Общие файлы OpenLDAP для библиотек
ii  slapd                         2.4.44+dfsg-5+deb9u2           amd64        Сервер OpenLDAP (slapd)

Спасибо за вашу помощь.

Обновление:

Небольшое обновление.
Просто чтобы проверить. Если я удаляю строку olcDbCacheSize, я получаю ошибку для следующей строки : olcDbCheckpoint

5c7553fc <= str2entry: str2ad(olcDbCheckpoint): тип атрибута
не определен

Обновление 1:

Вот строки, начинающиеся с olcDb*.
Все строки находятся в разделе dn: olcDatabase={1}bdb,cn=config.
Я пропустил некоторые строки посередине (они не начинаются с olcDb).

dn: olcDatabase={1}bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
[пропущено]
olcDbDirectory: /var/lib/slapd 
olcDbCacheSize: 1000
olcDbCheckpoint: 512 15
olcDbConfig: {0}# Этот конфигурационный файл устанавливает параметры BerkeleyDB при использовании
olcDbConfig: {1}# backend, для базы данных, хранящейся в каталоге, где это
olcDbConfig: {2}#
olcDbConfig: {3}# Установить каталог для использования журналов транзакций:
olcDbConfig: {4}#set_lg_dir /var/lib/ldap/logs
olcDbConfig: {5}# Установить кеш журнала транзакций в памяти (2 МБ)
olcDbConfig: {6}set_lg_bsize 2097152
olcDbConfig: {7}# Установить максимальный размер файла журнала транзакций, должен быть >=4* lg_bsize 
olcDbConfig: {8}#set_lg_max              10485760
olcDbConfig: {9}set_lg_max              20971520
olcDbConfig: {10}# Установить кеш данных в памяти
olcDbConfig: {11}#set_cachesize   0       1048576        0
olcDbConfig: {12}
olcDbConfig: {13}
olcDbConfig: {14}# Для пакетных импортов, отключение журналирования транзакций полностью 
olcDbConfig: {15}# улучшает производительность:
olcDbConfig: {16}# set_flags DB_TXN_NOT_DURABLE
olcDbConfig: {17}
olcDbConfig: {18}
olcDbNoSync: FALSE
olcDbDirtyRead: FALSE
olcDbIDLcacheSize: 0
olcDbIndex: objectClass eq
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN eq
olcDbIndex: cn eq,subinitial
olcDbIndex: uid eq,subinitial
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: sn eq,subinitial
olcDbIndex: givenName eq,subinitial
olcDbIndex: member eq
olcDbIndex: mail eq,subinitial
olcDbIndex: FinLogin eq,approx,sub
olcDbIndex: uniqueMember eq
olcDbIndex: memberUid eq
olcDbLinearIndex: FALSE
olcDbMode: 0600
olcDbSearchStack: 16
olcDbShmKey: 0
olcDbCacheFree: 1
olcDbDNcacheSize: 0

Некоторые описания схем жестко закодированы в модулях или наложениях бэкенда.

Это, например, касается типа атрибута olcDbCacheSize, который определен в servers/slapd/back-bdb/config.c, и ваше локальное определение схемы не имеет эффекта.

Я подозреваю, что бэкенд back-bdb не загружен, и поэтому эти определения схемы недоступны в вашей инстанции slapd.

Ответ или решение

Ошибка "slapd : attribute type undefined" в контексте работы с OpenLDAP, когда вы используете команду slapadd для загрузки конфигурационного файла в формате LDIF, указывает на то, что сервер LDAP не распознает определенный атрибут, который вы пытаетесь использовать. В вашем случае вы получаете данную ошибку для атрибута olcDbCacheSize. Давайте разберемся подробнее в причинах и возможных решениях этой проблемы.

1. Причины возникновения ошибки

Ошибка "attribute type undefined" возникает в следующих случаях:

  • Отсутствие загруженного модуля бэкенда: как заметили в одном из обновлений, некоторые схемы (включая атрибуты) являются жестко закодированными в модулях бэкенда, таких как bdb или hdb. Если ваш сервер не загружает соответствующий бэкенд, то атрибуты не будут доступны.
  • Неверная или отсутствующая схема: если в LDIF-файл не были добавлены все необходимые определения схем, контролирующие указанные атрибуты, тогда они не смогут быть распознаны.
  • Привязка к различным версиям OpenLDAP: при изменении системной версии (например, переход с CentOS на Debian) могут быть различия в доступных модулях и их функционале.

2. Проверка бэкенда

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

  • Бэкенд bdb загружен. В случае, если вы используете bdb как бэкенд, вам нужно убедиться, что он определен и загружен в конфигурации вашего сервера ldap. Если вы использовали настройки по умолчанию в Debian, проверьте наличие соответствующих модулей в /etc/ldap/slapd.conf или в каталоге /etc/ldap/slapd.d.

  • Запуск slapd без ошибок. Попробуйте запустить slapd через командную строку с параметрами, которые вы использовали, чтобы убедиться, что сервер запускается без проблем и загружает все модули.

3. Соответствующие шаги по устранению ошибки

Для решения вашей проблемы выполните следующие шаги:

  1. Проверьте наличие необходимых модулей:
    Убедитесь, что в каталоге /etc/ldap/slapd.d/cn=config есть директива на загрузку модуля bdb. Это можно сделать, проверив, что файл olcModuleLoad включает строку back_bdb.la.

    Например:

    olcModuleLoad: back_bdb.la
  2. Перезапустите slapd:
    Если вы внесли изменения в конфигурацию, перезапустите slapd, чтобы они вступили в силу:

    systemctl restart slapd
  3. Проверьте наличие ошибок в логах:
    Логи могут содержать важную информацию о том, какие модули были загружены или возникли ли проблемы. Обычно логи можно найти в файле /var/log/syslog или в другом файле логов, связанном с slapd.

  4. Генерация конфигурации структуры:
    Если проблема продолжается, может потребоваться сгенерировать новую LDIF-конфигурацию, чтобы удостовериться, что все необходимые параметры_b_db и его зависимости корректно заданы.

  5. Явное указание модулей:
    Проверьте, возможно, вам потребуется явно указать загрузку определенных модулей для привязок, так как при миграции на новую систему могут быть изменения.

Заключение

Если после выполнения всех шагов ошибка "attribute type undefined" продолжает появляться, стоит рассмотреть возможность миграции конфигурации с использованием команд slaptest для проверки конфигурационных файлов или обращения к документации OpenLDAP, чтобы убедиться, что все версии и зависимости корректны.

Если вы заметили, что ошибок всё ещё много и они не ограничиваются только olcDbCacheSize, это может указывать на более глубокие конфигурационные проблемы или несовместимости версий, которые могут требовать дополнительного изучения.

Оцените материал
Добавить комментарий

Капча загружается...