CentOS7修改olcDatabase={2}hdb.ldif时遇No such object(32)错误求助
解决LDAP修改配置时出现的“ldap_modify: No such object (32)”错误
这个错误的核心原因很明确:你在ldif文件里指定的olcDatabase={2}hdb,cn=config条目根本不存在于你的LDAP配置中。CentOS 7上默认安装的OpenLDAP,其hdb数据库的条目编号通常不是{2},咱们一步步来排查修复:
1. 先确认实际存在的数据库配置条目
首先运行这条命令,列出所有当前配置里的数据库条目:
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase=*)' dn
你会得到类似这样的输出:
# extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (olcDatabase=*) # requesting: dn # dn: olcDatabase={0}config,cn=config dn: olcDatabase={1}hdb,cn=config # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
这里的olcDatabase={1}hdb,cn=config就是你要找的目标条目(注意编号可能是{1}而不是你用的{2})。
2. 修正你的db.ldif文件
根据上面查到的正确dn,修改你的db.ldif内容,同时还要注意去掉dc值里的多余空格(你写的dc= ec2里dc后面有空格,这会导致LDAP解析错误):
dn: olcDatabase={1}hdb,cn=config # 这里替换成你查到的实际编号 changetype: modify replace: olcSuffix olcSuffix: dc=ec2,dc=internal dn: olcDatabase={1}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=admin,dc=ec2,dc=internal dn: olcDatabase={1}hdb,cn=config changeType: modify add: olcRootPW olcRootPW: {SSHA}6zHtA20qkTmdLrJSfxo+VV3QLGS7m0CZ
3. 重新执行修改命令
运行你之前的命令,现在应该可以成功修改了:
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
额外检查点
- 确保slapd服务处于运行状态:
systemctl status slapd,如果没启动先启动它 - 如果你是刚安装的OpenLDAP,确认已经完成初始化:比如复制了默认的DB_CONFIG模板到
/var/lib/ldap/(命令:cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && chown ldap:ldap /var/lib/ldap/DB_CONFIG)
内容的提问来源于stack exchange,提问作者subrat padhi
相关产品推荐
相关产品推荐

