openLDAP ldap_modify:尝试删除自定义架构时服务器不愿意执行(53)

openLDAP ldap_modify:尝试删除自定义架构时服务器不愿意执行(53)

我已经创建了这个自定义的非常基本的模式:

objectclass ( 2.25.2.2.1
    NAME 'myObjectClass'
    DESC 'myObjectClass objectclass'
    STRUCTURAL
    MUST ( cn )
    )

我已经将它添加到这个 myObjectClass.ldif 文件中,没有任何问题:

dn: cn=myObjectClass,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: myObjectClass
olcObjectClasses: {0}( 2.25.2.2.1 NAME 'myObjectClass' DESC 'myObjectClass objectclass' STRUCTURAL MUST cn )

使用 ldapmodify:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f myObjectClass.ldif

现在我尝试使用 delete.ldif 删除它:

dn: cn=schema,cn=config
changetype: modify
delete: objectClass
objectClass: 2.25.2.2.1

使用 ldapmodify 总是得到 ldap_modify:服务器不愿意执行(53):

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f delete.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=schema,cn=config"
ldap_modify: Server is unwilling to perform (53)

我正在运行带有 OpenLDAP 2.4.31 的 Ubuntu 14.04 Server

我已经搜索过这个在官方文档中

A.2.2. 更好的 cn=schema 功能

在 2.3 中,您只能添加新的架构元素,而不能删除或修改现有元素。在 2.4 中,您可以随意修改架构。(当然,硬编码的系统架构除外。)

有人可以分享任何线索吗?

提前致谢!

答案1

在2.4版本的Openldap服务器中修改schema配置的方法是:

  • 删除所有使用此架构的条目

然后

停止 slapd 使用 slapcat 将动态配置导出到 LDIF 修改 LDIF 导出以删除有问题的架构 删除(或重命名)旧的动态配置目录 slapadd 更新的 LDIF 启动 slapd

根据这次谈话在官方网站上。

答案2

我知道这是一个老话题,但也许我的回答会对其他人有所帮助(包括将来的我自己)

我的 OpenLDAP 版本:slapd (Ubuntu)(2019 年 4 月 10 日 12:53:11)

我知道我们永远不应该手动编辑配置文件,但我已经使用过 ldapmodify,ldapdelete 不起作用。这是我最后一种真正有效的方法。

cd /etc/ldap
mv slapd.d /var/backups/slapd.d.bak
mkdir slapd.d
slapcat -n0 -F /etc/ldap/slapd.d.old/ > /tmp/config-in-portable-format.ldif

在这里编辑文件 /tmp/config-in-portable-format.ldif...

slapadd -n0 -F /etc/ldap/slapd.d -l /tmp/config-in-portable-format.ldif
chown -R openldap:openldap slapd.d/
chmod -R 755 slapd.d/
/etc/init.d/slapd restart

答案3

我在尝试使用以下方式添加架构时遇到了此错误

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif

它告诉我:

ldap_modify:服务器不愿意执行(53)附加信息:没有全球高级知识

我发现我的 ldif 文件的格式不太好(请注意我在可分辨名称之前的空格)。 我的 ldif 文件的屏幕截图

相关内容