在 OpenLDAP 中未找到 cn=config 的用户?

在 OpenLDAP 中未找到 cn=config 的用户?

我们在 Ubuntu 10.04 上运行 OpenLDAP。我能够使用cn=admin,dc=ourcompany,dc=com我的密码访问和使用前端。

但是我无法更改存储的服务器配置(例如日志级别),cn=config因为我似乎没有后端的有效用户/密码?

一些例子:

# ldapsearch
SASL/DIGEST-MD5 authentication started
Please enter your password: 
ldap_sasl_interactive_bind_s: Invalid credentials (49)
    additional info: SASL(-13): user not found: no secret in database

或者

# ldapadd -x -D "cn=admin,cn=config" -W -f "my.ldif""
Enter LDAP Password: 
ldap_bind: Invalid credentials (49)

我如何为 创建用户cn=config backend

答案1

Ubuntu 默认配置将 cn=admin,dn=example,dn=com 设置为后端的 root dn,但需要以 root 身份进行 SASL 身份验证才能修改在线配置。您可以使用:

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcAccess

列出你的配置的 ACL

要添加您的 ldif 文件,请尝试:

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f "my.ldif"

假设 LDAP 服务器位于本地机器上。如果希望原始命令有效,则需要添加 cn=admin,cn=config 用户,并将其指定为 cn=config 数据库的 rootdn,或设置 ACL 以授予其访问权限。

我无法使用 ldap 工具添加 rootdn,即使以 root 身份,我也无法添加/修改 cn=config DIT 的 ACL。我假设虽然 root 被授予了管理员访问权限,但添加 rootDN 是不够的。因此,要为在线配置添加 rootDN,您需要手动编辑配置。不建议这样做,因为它可能会破坏 slapd。

您需要使用 slappasswd 生成密码哈希,例如“somesecret”slappasswd 可能会生成 {SSHA}Hg/mI0rBWab3HCysr55B4Ew7/QmK0LBa

现在您可以添加 RootDN。首先停止 slapd

sudo service slapd stop

接下来使用您选择的编辑器(例如 nano)编辑 /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif

sudo nano /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif

然后在“structuralObjectClass: olcDatabaseConfig”行之前添加以下几行

olcRootDN: cn=admin,cn=config
olcRootPW: {SSHA}Hg/mI0rBWab3HCysr55B4Ew7/QmK0LBa

然后重新启动 slapd

sudo service slapd start

现在,您可以使用 cn=admin,cn=config 进行简单的绑定来修改 cn=config DIT;但是,我认为这不是一个好主意。我更喜欢通过 ssh 进入服务器并以 root 身份访问配置。然而,有些人认为这完全违背了在线配置的优势,在线配置中,只要您拥有必要的凭据,就可以使用任何 LDAP 浏览器修改配置,而无需停止 slapd。

相关内容