Openldap

在不執行 slapd 的情況下修改 openLDAP cn=config

  • April 15, 2019

我正在嘗試設置一個多主 openLDAP (PoC) 集群。我在某個地方創建了錯誤的配置,現在 slapd 將無法啟動。由於cn=config/ olcconfig 帶有 CRC32 標記,因此它不會接受手動更改。

那麼,如何在不執行守護程序的情況下進行配置更改?

slapadd,但我需要修改,而不是添加……對嗎?我覺得我可能遺漏了一些明顯的東西。

如果這很重要,我認為其中一個或兩個都是錯誤的olcModuleLoadolcServerID

在 Ubuntu 16.04 上執行 openldap-2.4.42。

更新

關於不被接受的編輯我錯了。配置因其他原因被拒絕(未找到 serverID / URL 匹配),校驗和錯誤已記錄,但不會阻止守護程序啟動。

我能夠手動編輯 ldif 文件/etc/ldap/slap.d/cn=config並啟動伺服器。(雖然我還沒有讓多主複製工作。)

我知道您基本上已經解決了您的問題,但我想如果其他人遇到此問題,我會添加自己的步驟來進行離線 slapd 配置。這來自我自己的基於 Debian 的系統的文件:

有時需要cn=config手動編輯樣式數據庫(例如,如果您無法使用 root 帳戶進入數據庫),但cn=config絕不應該手動編輯樣式數據庫。為了直接修復文件本身的問題,您需要將數據庫轉換為 ldif 格式,進行更改,然後恢復數據庫。這是使用拍打工具完成的。

首先停止 slapd 服務。建議複製 slapd 目錄及其所有內容,以防萬一出現問題。

$ systemctl stop slapd
$ cp -a /etc/ldap/slapd.d /var/backups/slapd.d-offline-$(date +%s)

現在備份您要更改的 slapd 數據庫。備份和恢復應使用拍打工具。Slapcat 可用於將數據庫從cn=config樣式轉換為 ldif 文件。要備份配置數據庫,請使用 slapcat 將其導出到 ldif 文件。

$ slapcat -n0 -F /etc/ldap/slapd.d/ -l /var/backups/slapd.d-config-$(date +%s).ldif

-n 選項指定要備份哪個數據庫。配置數據庫始終為 0。

要備份不同的數據庫,只需將 dbnum 選項替換為正確的數據庫編號。如果您只有一個數據庫,這可能是“1”。

$ slapcat -n1 -F /etc/ldap/slapd.d/ -l /var/backups/slapd.d-acme-$(date +%s).ldif

備份目前數據庫後,您需要刪除 ldap 文件夾下的 slapd 目錄並創建一個新目錄。

$ rm -rf /etc/ldap/slapd.d
$ mkdir /etc/ldap/slapd.d

現在您可以使用文本編輯器對使用 slapcat 工具創建的 ldif 文件進行更改。小心任何編輯,因為拼寫錯誤、無效語法和其他問題將導致重新導入 ldif 文件失敗。完成所有更改後,將數據庫導入新的 slapd 目錄。

cn=config使用 slapadd 工具將數據庫的 ldif 備份轉換為。slapadd 工具與 slapcat 工具一樣需要數據庫編號。0 始終是配置數據庫。

$ slapadd -n0 -F /etc/ldap/slapd.d -l /var/backups/slapd.d-config-<timestamp>.ldif

替換<timestamp>為您實際要還原的數據庫。

要恢復您的數據庫而不是配置數據庫,只需將 dbnum 選項替換為正確的數據庫編號。如果您只有一個數據庫,這可能是“1”。

確保更改所有新文件的所有權和權限。

$ chown -R openldap:openldap /etc/ldap/slapd.d

現在開始 slapd 備份。

$ systemctl start slapd

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