slapd:属性类型未定义

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

所以,数据库缓存大小在中声明olcBdb配置属性。

olc属性类型为了数据库缓存大小

dn:olcDatabase={1}bdb,cn=config是 ”对象类: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

答案1

一些模式描述在后端模块或覆盖中是硬编码的。

例如,属性类型就是这种情况数据库缓存大小在 servers/slapd/back-bdb/config.c 中定义并且您的本地模式定义没有效果。

我怀疑 back-bdb 后端未加载,因此这些模式定义在您的 slapd 实例中不可用。

相关内容