OpenLDAP 2.5中ldapmodify单次添加多属性失败求助
OpenLDAP 2.5中ldapmodify单次添加多属性失败的原因及解决方法
问题场景
参考2007年出版的《Mastering OpenLDAP》(对应OpenLDAP 2.3版本)中的方法,尝试用ldapmodify一次为条目添加两个属性,使用的LDIF内容如下:
dn: uid=nicholas,ou=Users,dc=example,dc=com changetype: modify add: description title description: This is a test title: Cartesian philosopher
但在OpenLDAP 2.5(Ubuntu 22.04)环境执行时出现报错:
thierry@thierry-VirtualBox:~$ ldapmodify -x -w secret -D 'cn=Manager,dc=example,dc=com' dn: uid=nicholas,ou=Users,dc=example,dc=com changetype: modify add: description title description: This is a test title: Cartesian philosopher ldapmodify: wrong attributeType at line 4, entry "uid=nicholas,ou=Users,dc=example,dc=com"
而分两次单独添加属性则可以正常执行,执行ldapsearch也能确认两个属性已成功添加。
原因分析
- OpenLDAP 2.3版本的
ldapmodify工具对LDIF格式的校验较为宽松,允许在add:行中同时列出多个属性名,以此实现一次性添加多属性的非标准写法。 - 从后续版本(包括2.5)开始,
ldapmodify严格遵循LDIF(LDAP Data Interchange Format)标准规范,该标准明确要求每个add:操作只能针对单个属性。这种非标准写法不再被支持,因此会触发属性类型错误。
正确的单次添加多属性写法
如果要在单次ldapmodify操作中添加多个属性,需要将每个属性的添加操作拆分为独立的add:块,块之间用空行分隔,正确的LDIF格式如下:
dn: uid=nicholas,ou=Users,dc=example,dc=com changetype: modify add: description description: This is a test add: title title: Cartesian philosopher
使用上述LDIF内容执行ldapmodify命令,即可一次性完成两个属性的添加操作,无需分两次执行。
内容的提问来源于stack exchange,提问作者Denebe
相关产品推荐
相关产品推荐

