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

关于OpenLDAP自定义olcAttributeTypes/olcObjectClasses删除及slapd重启后属性类消失问题的咨询

关于OpenLDAP自定义olcAttributeTypes/olcObjectClasses删除及slapd重启后属性类消失问题的解答

一、删除自定义olcAttributeTypes的方法

首先必须强调:绝对不能直接编辑slapd.d目录下的自动生成文件,文件顶部已经明确标注DO NOT EDIT,一定要用官方推荐的ldapmodify工具来操作。

你需要创建一个用于删除属性的LDIF文件,比如命名为delete-dateOfBirth.ldif,内容可以有两种写法:

  1. 完整匹配属性定义(和添加时的格式一致):
dn: cn=schema,cn=config
changetype: modify
delete: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.60136.2
NAME 'dateOfBirth'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
  1. 用唯一OID+索引快速匹配(从你的cn=schema.ldif能看到该属性是{0}索引):
dn: cn=schema,cn=config
changetype: modify
delete: olcAttributeTypes
olcAttributeTypes: {0}( 1.3.6.1.4.1.60136.2 )

创建好文件后,执行以下命令完成删除:

ldapmodify -Y EXTERNAL -H ldapi:/// -f delete-dateOfBirth.ldif

二、删除自定义olcObjectClasses的方法

逻辑和删除属性完全一致,只需要把LDIF中的操作对象换成olcObjectClasses即可。

举个例子,假设你的自定义对象类OID是1.3.6.1.4.1.60136.3,且在cn=schema.ldif中索引为{1},创建delete-custom-oc.ldif:

dn: cn=schema,cn=config
changetype: modify
delete: olcObjectClasses
olcObjectClasses: {1}( 1.3.6.1.4.1.60136.3 NAME 'customUser' ... )

同样用ldapmodify命令执行删除:

ldapmodify -Y EXTERNAL -H ldapi:/// -f delete-custom-oc.ldif

三、slapd重启后自定义类/属性消失的原因及解决办法

这个问题大概率是以下两种情况导致的:

  1. 配置未正确持久化
    虽然你用ldapmodify添加了属性,但如果操作过程中出现隐性错误(比如LDIF格式有细微问题),可能导致配置没有写入到slapd.d的持久化文件中。建议每次修改后用ldapsearch验证配置是否存在:
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config

如果能查到你添加的属性/对象类,说明配置已持久化;如果查不到,检查之前的ldapmodify命令输出是否有报错。

  1. slapd启动时加载schema失败
    重启后查看slapd的日志(通常在/var/log/openldap/slapd.log,不同系统路径可能不同),里面会记录启动时加载schema的细节。常见的问题包括:自定义schema的格式不合法、权限不足导致无法读取配置文件、或者启动配置中遗漏了加载自定义schema的逻辑。

另外,每次修改完配置后,建议先执行slaptest -u检查配置合法性,避免因语法错误导致重启后配置失效。


备注:内容来源于stack exchange,提问作者IgorTheOverlord

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 16:20:28