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

Nic*_*ick 2 openldap

我们在 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
Run Code Online (Sandbox Code Playgroud)

或者

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

如何创建用户cn=config backend

Chr*_*ris 8

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

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcAccess
Run Code Online (Sandbox Code Playgroud)

列出配置的 ACL

添加您的 ldif 文件尝试:

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f "my.ldif"
Run Code Online (Sandbox Code Playgroud)

假设 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
Run Code Online (Sandbox Code Playgroud)

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

sudo nano /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
Run Code Online (Sandbox Code Playgroud)

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

olcRootDN: cn=admin,cn=config
olcRootPW: {SSHA}Hg/mI0rBWab3HCysr55B4Ew7/QmK0LBa
Run Code Online (Sandbox Code Playgroud)

然后重启slapd

sudo service slapd start
Run Code Online (Sandbox Code Playgroud)

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