Ldap

openLDAP ldap_modify: 嘗試刪除自定義模式時伺服器不願意執行 (53)

  • April 29, 2022

我創建了這個自定義且非常基本的架構:

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: Server is unwilling to perform (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 伺服器

在官方文件中搜尋過這個:

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

在 2.3 中,您只能添加新的架構元素,而不能刪除或修改現有元素。在 2.4 中,您可以隨意修改架構。(當然,硬編碼的系統模式除外。)

有人可以分享任何線索嗎?

提前致謝!

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

  • 刪除所有使用此架構的條目

然後

停止 slapd 使用 slapcat 將動態配置導出到 LDIF 修改 LDIF 導出以刪除有問題的模式 刪除(或重命名)舊的動態配置目錄 slapadd 更新的 LDIF 啟動 slapd

根據官方網站上的這個談話。

我知道這是一個舊執行緒,但也許我的回答會幫助其他任何人(包括將來我自己)

我的 OpenLDAP 版本:slapd (Ubuntu) (Apr 10 2019 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

引用自:https://serverfault.com/questions/838622