Linux
ldapmodify
不起作用 - 不會更改文件內容
我正在遵循此執行緒中的步驟: 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
命令都沒有發生。所以,眼前的問題已經解決了。
但是…. 現在,olcRootDN 和 olcSuffix 正在被正確替換。但是,現有行:
olcRootPW: e1NTSEF9b1J2enI5cjFxUTdDbjN4Ti9lZm1lS0pRendTMHdLNno=..
不被替換為:
olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z
它只是保持不變。我會為此開一個新文章。
檢查您的
changes.ldif
. 在我的範例中,有些行中只有 a-
。這些表示 LDAP 操作的數據塊的結尾(如add
或replace
)。參見RFC
man 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 文件是相當神秘的……