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

删除OpenLDAP中的inetorgperson schema失败,报错:Server is unwilling to perform (53)

删除OpenLDAP中的inetorgperson schema失败,报错:Server is unwilling to perform (53)

嗨,这个报错我太熟了!本质上就是inetorgperson schema还被其他对象依赖着,OpenLDAP不让你删正在被使用的东西。咱们一步步来解决:

先搞清楚为啥删不掉

  1. 已有条目在使用inetorgperson的对象类/属性:比如你目录里的用户条目大概率用了inetOrgPerson这个对象类,或者它定义的mail、givenName这类属性,只要有条目在引用,就没法直接删schema。
  2. schema间的依赖锁死:inetorgperson继承了cosine和core schema,同时可能和你安装的nis schema有间接关联(比如用户条目同时用了posixAccount和inetOrgPerson)。
  3. 配置限制:默认情况下OpenLDAP可能禁止删除已启用的schema,得先开权限。

具体解决步骤

第一步:备份配置(重中之重!)

先把cn=config导出备份,万一操作炸了能恢复:

slapcat -b cn=config -l config_backup.ldif

第二步:检查并清理依赖条目

先找出所有用了inetOrgPerson对象类的条目,替换成你的实际base DN:

ldapsearch -Y external -H ldapi:/// -b "dc=yourdomain,dc=com" "(objectClass=inetOrgPerson)" dn

如果返回了一堆条目,你需要逐个修改这些条目,把inetOrgPerson从objectClass列表里移除(或者换成你后续要用到的rfc2307bis相关对象类,比如organizationalPerson+posixAccount)。

第三步:开启schema删除权限(如果需要)

默认OpenLDAP可能不让删schema,先修改配置放开权限:

ldapmodify -Y external -H ldapi:/// <<EOF
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAllowDeleteSchema
olcAllowDeleteSchema: yes
EOF

第四步:尝试删除inetorgperson schema

现在再执行删除命令:

ldapdelete -v -Y external -H ldapi:/// cn={3}inetorgperson,cn=schema,cn=config

如果还是报错,回去检查是不是还有遗漏的依赖条目没清理干净。

额外提醒:你的rfc2307bis迁移方案可以优化下

其实你没必要删了inetorgperson再重新加——rfc2307bis和inetorgperson是兼容的,正确的迁移流程应该是:

  1. 先添加rfc2307bis schema(它是nis的超集,能兼容原有nis属性)
  2. 把所有用nis对象类的条目(比如posixAccount、posixGroup)迁移到rfc2307bis对应的对象类
  3. 确认所有条目都切换完成后,再删除nis schema
  4. inetorgperson可以保留,它的属性在rfc2307bis场景下依然能用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:10:28