OpenLDAP 的 cn=config 为“olcDatabase={0}config,cn=config”的复制添加单独的用户

OpenLDAP 的 cn=config 为“olcDatabase={0}config,cn=config”的复制添加单独的用户

我希望我问的问题不是愚蠢的。我是第一次创建自己的 LDAP 服务。

对于我的常规 mdb 数据库,添加多个管理员很容易。由于它包含属性,olcSuffix因此可以添加新 OU、添加olcAccess规则和所有内容,因此可以将复制配置为使用专用用户。

但是我还没有找到在复制配置时做类似的事情的方法:

olcDatabase={0}config,cn=config

我无法将 ou 添加到cn=configdn。我收到以下错误:

could not add entry dn="ou=admins,cn=config" (line=825)

有什么建议吗?


更新 20180828

在这里我添加了有关我所尝试过的更多细节。

当我尝试导入时,服务器抱怨:

# ldapadd -c -x -H "ldap://localhost" -D "cn=admin,cn=config" -W -f test.ldif
Enter LDAP Password:
adding new entry "ou=admins_group,dc=config"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

adding new entry "uid=u1,ou=admins_group,dc=config"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

test.ldif的内容为:

dn: ou=admins_group,dc=config
objectClass: organizationalUnit
ou: admins_group

dn: uid=u1,ou=admins_group,dc=config
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: securityPrincipal
uid: u1
cn: u1
sAMAccountName: u1
objectSid: u1
userPassword:: e1NTSEF9VVN6MVpuRmx5bWVmN2w5Tmp5WmJtb3duKzMwSEtXREc=
shadowLastChange: 15969
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1300
gidNumber: 1300
homeDirectory: /home/admin/u1

与我用来将用户添加到 mdb 数据库的几乎相同

答案1

具体的错误意味着没有具有与您的条目的 DN 匹配的前缀的数据库。请记住,配置后端使用的是cn=config,而不是dc=config。(dc 表示它是 DNS 域组件,但事实并非如此。)

但即使前缀正确,您也会收到不同的错误(架构违规)。最后,cn=config不能有多余的条目,这是由后端强制执行的。

好消息是,用户帐户不会位于 cn=config 下,它可以位于任何数据库。syncrepl 和 olcAccess 规则都丝毫不关心您的用户拥有什么 DN 后缀,因此只需将帐户添加到您的主 mdb 数据库 - 或重新使用现有的数据库。

例如这是我的配置:

dn:olcDatabase={0}config,cn=config
olcAccess:{0}到 dn.sub="cn=config"
  由 dn="cn=Replica,ou=System,dc=example,dc=org" 阅读
  由 group="cn=Administrators,ou=Groups,dc=example,dc=org" 管理
  由 * 无中断
...

只要用户可以登录服务器,您就可以将其列在 ACL 中并用于复制。(实际上,证书或 SASL/Kerberos 登录可能会生成目录中不存在的 DN根本,并且它们仍然可以使用。)

相关内容