我已经创建了这个自定义的非常基本的模式:
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 文件的屏幕截图