我正在按照此线程中的步骤进行操作: 使用 slapd.d 配置进行基本的 openldap 设置
我创建并保存了自己的 .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:没有相等匹配规则
答案1
检查 的语法changes.ldif
。在我的示例中,有些行中只有一个。这些行表示 LDAP 操作(如或)-
的数据块的结尾。add
replace
查看man 5 ldif
RFC 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 文件相当神秘......
答案2
我的问题的根源在于一行olcRootPW
已经存在。这似乎导致了中止,因为以下两个replace
命令都没有发生。
所以,眼前的问题已经解决。
然而……现在,olcRootDN 和 olcSuffix 已被正确替换。但是,现有行:
olcRootPW: e1NTSEF9b1J2enI5cjFxUTdDbjN4Ti9lZm1lS0pRendTMHdLNno=..
不会被替换为:
olcRootPW: {SSHA}oRvzr9r1qQ7Cn3xN/efmeKJQzwS0wK6z
一切依旧。我会为此开一个新帖子。