在 Ubuntu 22.04 中设置 OpenLDAP 后,DIT 中没有 rootDN

在 Ubuntu 22.04 中设置 OpenLDAP 后,DIT 中没有 rootDN

我对 LDAP 和目录服务还不熟悉(我的目标是从公钥目录(pkddownloadsg.icao.int/download)导入包含证书的 ldif 文件)。

但是我已经无法在 Ubuntu 中正确设置 OpenLDAP。我遵循了以下指南:https://ubuntu.com/server/docs/service-ldap 设置过程似乎运行正常,但是当我想查看整个 DIT 时,rootDN 却不知为何缺失了:

user1@computer:~$ ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
dn: dc=example,dc=com

应该有第二行:

dn: cn=admin,dc=example,dc=com

这可能是我无法添加 ldif 文件的原因:

user1@computer:~$ sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f icaopkd.ldif -v
ldap_initialize( <DEFAULT> )
Enter LDAP Password:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

知道这可能是什么原因造成的吗?

答案1

OpenLDAP 的 rootDN 不需要存在于 DIT 中。特殊情况下,即使不存在 rootDN,您也可以绑定,只要您使用olcRootPW:在 slapd DB 后端配置中指定的密码即可。

(如果你决定创建与 rootDN 相对应的条目,然后照常根据该条目的用户密码检查密码,尽管它将保留其“root”权限。)

首先使用sudo -u ldap slapcat -n 1直接将数据库内容转储为 LDIF(绕过 slapd 的访问控制,因为默认情况下不可访问的条目也是不可见的)。

  • 如果“cn=admin”条目确实不存在,并且您希望将其作为 DIT 中的真实条目,则使用sudo -u ldap slapadd...从 LDIF 手动插入它。

  • 如果该条目不存在,并且您更喜欢更简单的方法,则使用将后端条目的属性ldapmodify更新为您想要的密码 - 请参阅 Ubuntu 文档中的“更改 RootDN 密码”部分以获取示例。olcRootPW:olcDatabase={1}mdb,cn=config

(所有slap*工具都直接针对 DB 文件进行操作,因此应该对拥有它们的用户进行 sudo;通常ldapopenldapslapd- 我不记得 Ubuntu 使用哪一个。

ldap*同时,除非命令专门用于本地套接字身份验证(即,除非它们使用),否则您不必使用 sudo 命令-H ldapi:/// -Y EXTERNAL。在所有其他情况下,这些工具都应以您的普通用户身份运行。)

相关内容