【问题标题】:Problems getting OpenLDAP memberOf working让 OpenLDAP memberOf 工作的问题
【发布时间】:2018-02-28 14:55:46
【问题描述】:

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

我已经按照http://www.openldap.org/doc/admin24/guide.html#A 快速入门指南中的说明在 Centos 7 虚拟机上下载并安装了 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 期间无效 objectClass 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)

另一个更新: 进步!

我通过编辑将 olcRootPW 添加到 cn=config 数据库 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

【问题讨论】:

  • 您需要提供实际的命令以及它们导致的实际错误。
  • 好吧,“访问权限不足”是不言自明的,当然?不要将代码放入 cmets 中,也不要将应该属于您问题的内容放入 cmets 中。我看不懂,你也看不懂。
  • 但我使用的是 root 用户和系统设置的凭据。我在网上找到了一些关于此的内容,但它们仅引用了 slapd.conf 配置样式。我还没有找到有关如何使用 cn=config 样式解决此问题的任何信息。
  • 您不应提供{0}{1}。 OpenLDAP 自动添加序列号
  • 删除它们,没有区别。

标签: ldap openldap


【解决方案1】:

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

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

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

然后ldapadd 命令需要与bind dn 'cn=config' 一起运行。此时启用 memberof config 的条目将成功添加。

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

对于第二个 refint 文件,即添加覆盖的文件,我只需要删除属性的“经理所有者”部分,因为我的目录没有这些属性。至此ldif添加成功。

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

【讨论】:

    【解决方案2】:

    为可能需要更多信息的用户添加此评论。 This 文章清楚地解释了如何启用 memberOf 覆盖以及参照完整性。事实上,它完全解释了端到端的 openLDAP 实现。

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多