OpenLDAP 抱怨字段未被索引

OpenLDAP 抱怨字段未被索引

我在 Debian 上使用 OpenLDAP (slapd) v2.4.47。它在日志文件中以以下方式发出抱怨 ( /var/log/debug)

slapd[1142]: conn=1508 op=4 SRCH base="cn=persons,cn=internal" scope=2 deref=0 filter="(&(objectClass=mozillaAbPersonAlpha)(|(cn=john*)(mail=john*)(sn=john*)))"
slapd[1142]: <= mdb_substring_candidates: (cn) not indexed                                                       
slapd[1142]: <= mdb_substring_candidates: (mail) not indexed                                                     
slapd[1142]: <= mdb_substring_candidates: (sn) not indexed                                                       

对应的数据库(/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif)配置为:

dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq
olcDbIndex: cn,sn,mail,uid,sambaSID eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbIndex: sambaDomainName eq
...

此外,当我尝试在“有问题的”属性(例如cn)上添加索引时,它会失败:

# ldapmodify -H ldapi:// -Y EXTERNAL <<EOM
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: cn eq
EOM
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
        additional info: duplicate index definition for attr "cn"

这样我尝试了所有cn,,mailsn出现了同样的错误,所以看来索引在这些属性上是活跃的。

那么为什么 OpenLDAP 会抱怨缺少索引呢?

PS:我只运行一个 OpenLDAP,因此绝对不会搞砸。

答案1

它抱怨您需要 SUBstring 索引,而不仅仅是相等索引。您可以使用“sub”关键字添加它们。例如:

olcDbIndex: cn,mail,sn sub,eq

相关内容