让 OpenLDAP memberOf 工作的问题

Problems getting OpenLDAP memberOf working

我对 OpenLDAP 不是很熟悉,但我正在尝试让本地实例工作以测试开发中的客户端,这需要 memberOf 属性。

我已经按照 http://www.openldap.org/doc/admin24/guide.html#A 快速入门指南中的说明在 Centos 7 VM 上下载并安装了 OpenLDAP。我没有使用包管理来安装它。由于我使用的是 2.4.45,它使用的是 cn=config OLC 配置而不是 slapd.conf 配置方案

在上面的第 4 步中,我在配置脚本中使用了 --enable-memberof 和 --enable-refint 标志。当我 运行 预安装测试时,它做了 运行 memberof 测试,并且它们通过了,所以我知道覆盖可以以某种方式应用。

我已经尝试了在 https://adimian.com/blog/2014/10/how-to-enable-memberof-using-openldap/ 中找到的说明,并且在许多其他地方也有一些细微的变化。我已经 运行 解决了以下问题...

  1. 在 ldapadd 期间出现关于无效对象类 oldModuleList 的错误
  2. ldapadd 期间访问不足错误
  3. 我没有与任何示例中找到的模块路径相对应的本地目录。我的机器上似乎没有 memberof.la 文件。

这是否在正确的轨道上?还是因为我从源代码安装或使用了 --enable-memberof 标志,所以过程会有所不同?

如果我需要提供任何信息,请告诉我。

更新: 目前,我正在尝试添加上面链接说明中找到的带有 dn dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config 的条目。我得到 # ldapadd -x -D "cn=Manager,dc=aaron,dc=com" -W -f member.ldif Enter LDAP Password: adding new entry "olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config" ldap_add: Insufficient access (50)

另一个更新: 进步了!

我通过编辑在 cn=config 数据库中添加了一个 olcRootPW etc/slapd.d/cn=config/olcDatabase={0}config.ldif 然后将该 dn 用于 运行 ldapadd: ldapadd -x -D "cn=config" -W -f member.ldif 我不得不将 {0} 和 {1} 放回去。

尝试添加第一个 refint ldif 失败,但我 认为 我不需要它,因为它们不是模块,而是根据我的配置直接编译到 slapd它。

现在我正在尝试添加第二个 refint 条目并获得

[root@openldap openldap]# ldapadd -x -D "cn=config" -W -f refint2.ldif 
Enter LDAP Password: 
adding new entry "olcOverlay={1}refint,olcDatabase={1}mdb,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: olcRefintAttribute <manager>: attribute type undefined

所以这是我必须做的一切才能让它从我的原始问题开始工作:

将 olcRootPW 条目添加到 olcDatabase={0}config.ldif 配置条目。正如 EJP 所说,这是错误的形式,但由于这只是一个本地测试目录,我只希望它允许我测试客户端...

文件中没有 {0} 和 {1} 项,加载仍然失败。我但都回来了,它奏效了。我没有回去检查 EJP 的建议,只有 {1}。

然后 ldapadd 命令需要 运行 和 bind dn 'cn=config'。到那时,启用 memberof 配置的条目将添加成功。

我尝试添加第一个 refint 文件,即执行模块的文件。这不起作用,我收到有关 olcModuleList 属性的错误。我认为因为我通过 --enable-memberof 和 --enable-refint 将覆盖层直接编译到 OpenLDAP 中,所以我不需要这部分?

对于第二个 refint 文件,添加叠加层的文件,我只需要删除 'manager owner' 部分属性,因为我的目录没有这些属性。至此ldif添加成功。

然后我进入目录并添加用户、组并将用户分配给组,并且(一旦我告诉它获取操作属性)你看我的用户有适当的 memberOf 属性!