Linux

ldapmodify 不起作用 - 不會更改文件內容

  • September 5, 2019

我正在遵循此執行緒中的步驟: Basic openldap setup using slapd.d configuration

我創建並保存了我自己的 .ldif 文件,其中包含我需要的更改,並將其保存為changes.ldif. 這是我製作的文件的內容:

dn: olcDatabase={2}hdb,cn=config
changetype: modify

add: olcRootPW
olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z

replace: olcRootDN
olcRootDN: cn=admin,dc=softura,dc=com

replace: olcSuffix
olcSuffix: dc=softura,dc=com

然後我執行了ldapmodify命令:

ldapmodify -a -Q -Y EXTERNAL -H ldapi:/// -f changes.ldif

有人告訴我:

修改條目“olcDatabse={2}hdb,cn=config”

到目前為止一切順利,對吧?但是,如果我再打開文件olcDatabse={2}hdb.ldib……什麼都沒有改變。

編輯:

我已將 ldif 文件的內容更改為:

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z
-
replace: olcRootDN
olcRootDN: cn=admin,dc=softura,dc=com
-
replace: olcSuffix
olcSuffix: dc=softura,dc=com

現在當我執行命令時,我得到了這個:

ldap_modify:匹配不當(18)

附加資訊:修改/添加:olcRootPW:沒有相等匹配規則

我的問題的根源是olcRootPW已經存在一行。這似乎導致了當時的中止,因為以下兩個replace命令都沒有發生。

所以,眼前的問題已經解決了。

但是…. 現在,o​​lcRootDN 和 olcSuffix 正在被正確替換。但是,現有行:

olcRootPW: e1NTSEF9b1J2enI5cjFxUTdDbjN4Ti9lZm1lS0pRendTMHdLNno=..

不被替換為:

olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z

它只是保持不變。我會為此開一個新文章。

檢查您的changes.ldif. 在我的範例中,有些行中只有 a -。這些表示 LDAP 操作的數據塊的結尾(如addreplace)。

參見RFCman 5 ldif 2849 。

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z
-
replace: olcRootDN
olcRootDN: cn=admin,dc=softura,dc=com
-
replace: olcSuffix
olcSuffix: dc=softura,dc=com

LDIF 文件是相當神秘的……

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