
OpenLDAP 2.4 及以上版本已弃用传统静态 schema 修改方式,需通过动态配置(OLC)启用属性选项(如 phonetic),才能支持 cn;phonetic 等带选项的属性语法。
openldap 2.4 及以上版本已弃用传统静态 schema 修改方式,需通过动态配置(olc)启用属性选项(如 phonetic),才能支持 `cn;phonetic` 等带选项的属性语法。
在 OpenLDAP 2.4+(如您使用的 2.4.42.0)中,cn;phonetic 这类带语言/音标选项(attribute options)的属性无法直接使用,是因为默认未启用 phonetic 选项支持。OpenLDAP 自 2.3 起已移除对 attributeoptions 的静态配置支持,转而要求通过 OLC(On-Line Configuration) 动态启用所需选项。
正确做法是:向 cn=config 配置数据库添加 olcAttributeOptions 条目,显式声明支持 phonetic(及可选的 lang-)选项:
# 使用 ldapmodify 修改 cn=config(需管理员权限) dn: cn=config changetype: modify add: olcAttributeOptions olcAttributeOptions: lang- phonetic
✅ 执行前提:
- 使用具有
cn=config写权限的管理员 DN(如您的cn=testadmin,o=test.com),且该用户在olcRootDN或对应olcAccess规则中被授权; - 连接
ldap://localhost:389(或对应配置端口)并指定-Y EXTERNAL -H ldapi:///(推荐本地 socket 方式)或提供 SASL/SSL 凭据; - 确保
cn=config数据库已启用(默认开启)且未被锁定。
⚠️ 注意事项:
- 不要尝试修改
core.schema或其他内置 schema 文件——这不仅无效,还可能导致服务启动失败; -
olcAttributeOptions是全局配置项,一次设置即可生效,无需重启 slapd(OLC 支持热更新); -
lang-和phonetic之间需以空格分隔(非分号),且lang-后应跟连字符(符合 RFC 4512 语义),phonetic为独立标准选项; - 启用后,
cn;phonetic即可作为有效属性用于add/modify操作,例如:dn: uid=alice,ou=people,dc=test,dc=com changetype: add objectClass: inetOrgPerson cn: Alice Smith cn;phonetic: アリス・スミス uid: alice
总结:cn;phonetic 的可用性不取决于 schema 定义,而取决于服务器是否允许该 attribute option。通过 OLC 启用 olcAttributeOptions: phonetic 是 OpenLDAP 2.4+ 的标准且唯一可靠方式。










