LDAP核心单值不可用户修改属性重复值移除问题求助
FreeIPA组单值属性重复(modifiersName多值)修复方案
问题背景
在CentOS上部署的FreeIPA 4.9.8主/副本服务器中,所有组条目出现单值核心属性(如modifiersName)重复的情况,示例LDAP条目如下:
dn: cn=<group name>,cn=groups,cn=accounts,dc=<domain>,dc=com modifiersName: cn=MemberOf Plugin,cn=plugins,cn=config modifiersName: cn=MemberOf Plugin,cn=plugins,cn=config
尝试通过ldapmodify删改属性、删除组均失败,系统提示“单值属性存在多值”;且组间存在隶属关系,删除操作会触发主组成员关系修改,导致无法执行。该属性属于核心Schema,标记为SINGLE-VALUE NO-USER-MODIFICATION,普通用户操作无法修改。
修复步骤
1. 停止FreeIPA服务,确保离线操作
先在主服务器上停止所有相关服务,避免在线同步干扰:
ipa-server-stop # 副本服务器同步执行:ipa-replica-stop
2. 使用dbscan工具直接修复数据库
389 Directory Server(FreeIPA底层依赖)提供dbscan工具可直接操作数据库文件,修复单值属性多值问题:
- 定位到389-ds的数据库目录,路径格式为
/var/lib/dirsrv/slapd-<DOMAIN-UPPERCASE>/(替换为你的实际域名大写形式,如EXAMPLE-COM):
cd /var/lib/dirsrv/slapd-EXAMPLE-COM/
- 执行扫描修复命令:
dbscan -f db/ -r -c fix_single_value
参数说明:
-f db/指定数据库文件所在路径-r递归处理所有LDAP条目-c fix_single_value自动修复单值属性的多值冲突,保留最新的属性值
3. 若dbscan无效,使用RootDN强制修改属性
如果dbscan未解决问题,可通过389-ds的根管理员(RootDN)绑定,绕过NO-USER-MODIFICATION限制修改属性:
- 创建LDIF修改文件
fix_modifiersname.ldif,替换占位符为实际组信息:
dn: cn=<group name>,cn=groups,cn=accounts,dc=<domain>,dc=com changetype: modify replace: modifiersName modifiersName: cn=MemberOf Plugin,cn=plugins,cn=config
- 执行修改命令(输入389-ds的Directory Manager密码,注意不是FreeIPA admin密码):
ldapmodify -D "cn=Directory Manager" -W -f fix_modifiersname.ldif -H ldapi:///
4. 处理组隶属关系导致的删除失败
若需删除问题组但因MemberOf关联报错,可先暂停MemberOf插件,修复后再恢复:
- 进入LDAP交互修改模式:
ldapmodify -D "cn=Directory Manager" -W -H ldapi:///
- 输入以下LDIF内容禁用MemberOf插件:
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
按Ctrl+D提交修改。
3. 修复所有组的重复属性后,重新启用插件:
再次执行ldapmodify命令,输入以下LDIF:
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- 此时可尝试删除目标组:
ipa group-del <group name>
5. 验证修复并同步副本
- 启动FreeIPA服务:
ipa-server-start # 副本服务器:ipa-replica-start
- 验证组属性是否正常:
# 使用FreeIPA工具查看 ipa group-show <group name> --all # 或用LDAP查询确认 ldapsearch -x -b "cn=<group name>,cn=groups,cn=accounts,dc=<domain>,dc=com" modifiersName
- 副本服务器同步数据:
ipa-replica-manage re-initialize --from <master-fqdn> <replica-fqdn>
预防措施
- 避免直接手动编辑LDAP数据库文件,所有操作优先使用FreeIPA官方工具或389-ds合法命令
- 定期执行FreeIPA备份:
ipa-backup - 升级FreeIPA至最新稳定版本(如4.10+),4.9.8存在部分插件相关已知bug,升级可降低类似问题发生率
内容的提问来源于stack exchange,提问作者Shaav
相关产品推荐
相关产品推荐

