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

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 backend conf
 iguration' 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 'Entry cache s
 ize in entries' SYNTAX OMsInteger SINGLE-VALUE )

3)

dn: olcDatabase={1}bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
[skip]
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 utilities
ii  ldapscripts                   2.0.7-2                        all          Add and remove users and groups (stored in a LDAP directory)
ii  libldap-2.4-2:amd64           2.4.44+dfsg-5+deb9u2           amd64        OpenLDAP libraries
ii  libldap-common                2.4.44+dfsg-5+deb9u2           all          OpenLDAP common files for libraries
ii  slapd                         2.4.44+dfsg-5+deb9u2           amd64        OpenLDAP server (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
[skip]
olcDbDirectory: /var/lib/slapd 
olcDbCacheSize: 1000
olcDbCheckpoint: 512 15
olcDbConfig: {0}# This configuration file sets BerkeleyDB options when using
olcDbConfig: {1}# backend, for the database held in the directory where this
olcDbConfig: {2}#
olcDbConfig: {3}# Set directory to use for transaction logs:
olcDbConfig: {4}#set_lg_dir /var/lib/ldap/logs
olcDbConfig: {5}# Set in-memory transaction log cache (2MB)
olcDbConfig: {6}set_lg_bsize 2097152
olcDbConfig: {7}# Set max transaction log file size, must be >=4* lg_bsize 
olcDbConfig: {8}#set_lg_max              10485760
olcDbConfig: {9}set_lg_max              20971520
olcDbConfig: {10}# Set in-memory database cache
olcDbConfig: {11}#set_cachesize   0       1048576        0
olcDbConfig: {12}
olcDbConfig: {13}
olcDbConfig: {14}# For batch imports, disabling transaction logging totally 
olcDbConfig: {15}# improve performance:
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 определено в server / slapd / back-bdb / config.c, и определение вашей локальной схемы не имеет никакого эффекта.

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