【问题标题】:LDAP - List group memberships for a user including nested groupsLDAP - 列出用户的组成员身份,包括嵌套组
【发布时间】:2022-01-28 07:44:49
【问题描述】:

我正在尝试查询特定用户的所有组成员身份。目前我只能获取用户是直接成员的组,但不能获取用户是间接成员的嵌套组。

设置如下。

  • 测试用户“user-01”
  • “user-01”所属的测试组“group-a”。
  • “group-a”所属的测试组“parent”。

我的意图是执行搜索,同时获得“group-a”和“parent”;目前我只得到'group-a'(直接会员资格)。有什么方法可以修改我的查询并在我的搜索结果中获得“父级”?

这是我的查询:

ldapsearch  -D 'cn=admin,dc=example,dc=org' -w admin -b 'dc=example,dc=org' "(&(objectClass=groupOfNames)(member=cn=user-01,dc=example,dc=org))" dn

这是我的 LDIF 文件:

dn: cn=user-01,dc=example,dc=org
sn: USER-01
cn: user-01
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword: 1234
mobile: +4670000001

dn: cn=group-a,dc=example,dc=org
cn: GROUP-A
objectClass: top
objectClass: groupOfNames
member: cn=user-01,dc=example,dc=org

dn: cn=parent-a,dc=example,dc=org
cn: GROUP-AB
objectClass: top
objectClass: groupOfNames
member: cn=group-a,dc=example,dc=org

我正在使用 OpenLDAP。

【问题讨论】:

    标签: ldap


    【解决方案1】:

    使用简单的 LDAP 过滤器无法做到这一点。您必须自己编写跟踪链接的代码。

    【讨论】:

      【解决方案2】:

      我的结构相似但不同:

      dn: cn=user-01,dc=example,dc=org
      sn: USER-01
      cn: user-01
      objectClass: top
      objectClass: person
      objectClass: organizationalPerson
      objectClass: inetOrgPerson
      userPassword: 1234
      mobile: +4670000001
      
      dn: cn=group-a,dc=example,dc=org
      cn: GROUP-A
      objectClass: top
      objectClass: groupOfNames
      member: cn=user-01,dc=example,dc=org
      memberOf: cn=group-a,dc=example,dc=org   <----- difference
      
      dn: cn=parent-a,dc=example,dc=org
      cn: GROUP-AB
      objectClass: top
      objectClass: groupOfNames
      

      我使用了您的 ldapsearch 查询并请求了 dn 旁边的 memberof。像这样的:

      ldapsearch  -D 'cn=admin,dc=example,dc=org' -w admin -b 'dc=example,dc=org' "(&(objectClass=groupOfNames)(member=cn=user-01,dc=example,dc=org))" dn memberof
      

      结果我得到了用户所属的直接组,我也得到了直接组所属的组。

      【讨论】: