You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过LDIF与ldapadd/ldapmodify为OpenLDAP用户添加属性?

解决OpenLDAP添加mail/middle_name/city属性的对象类违规问题

问题原因

你遇到的Object class violation (65)错误,是因为当前用户条目仅使用了person和top对象类——这两个类的属性集合里不包含mail,自然不允许添加该属性。同理,middle_name和city也不属于这两个类的允许属性范围。


解决方案

分两种场景处理,优先推荐使用LDAP标准属性与对象类,如需自定义属性名再选择扩展schema方案。

场景1:使用LDAP标准属性与对象类

LDAP有现成的对象类和属性对应你的需求:

  • mail属性属于inetOrgPerson对象类(该类继承自person,兼容原有属性)
  • 中间名可使用标准属性initials(存储缩写)或givenName(存储完整中间名)
  • 城市对应标准属性l(即localityName)

新用户条目LDIF示例

dn: cn=john,ou=People,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: john
sn: John
mail: john@john.com
initials: M  # 例如John M. Doe的中间名缩写
givenName: John Michael  # 如需完整中间名,可结合givenName使用
l: New York  # 对应城市属性

执行添加命令(替换为你的管理员DN):

ldapadd -x -D cn=admin,dc=example,dc=com -W -f john.ldif

已有用户条目修改LDIF示例

如果用户条目已存在,需用ldapmodify添加对象类和属性:

dn: cn=john,ou=People,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: inetOrgPerson
-
add: mail
mail: john@john.com
-
add: l
l: New York

执行修改命令:

ldapmodify -x -D cn=admin,dc=example,dc=com -W -f modify_john.ldif

场景2:自定义属性名(如必须用middle_name/city)

如果一定要使用非标准的middle_name和city属性名,需先扩展OpenLDAP的schema:

  1. 创建自定义schema的LDIF文件(custom_schema.ldif):
dn: cn=custom,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: custom
# 定义middle_name属性
olcAttributeTypes: ( 1.3.6.1.4.1.42.2.27.999.1.1 NAME 'middle_name' DESC 'Middle Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
# 定义city属性
olcAttributeTypes: ( 1.3.6.1.4.1.42.2.27.999.1.2 NAME 'city' DESC 'City' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
# 定义支持这些属性的自定义对象类
olcObjectClasses: ( 1.3.6.1.4.1.42.2.27.999.2.1 NAME 'customPerson' DESC 'Person with custom attributes' SUP person STRUCTURAL MUST cn MUST sn MAY ( middle_name $ city $ mail ) )
  1. 导入自定义schema(使用root权限通过ldapi连接):
ldapadd -Y EXTERNAL -H ldapi:/// -f custom_schema.ldif
  1. 创建或修改用户条目时使用自定义对象类:
dn: cn=john,ou=People,dc=example,dc=com
objectClass: top
objectClass: customPerson
cn: john
sn: John
mail: john@john.com
middle_name: Michael
city: New York

执行添加/修改命令即可完成操作。


内容的提问来源于stack exchange,提问作者Udi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:52:45