如何返回用户 DN,其中 UID 位于特定组中

如何返回用户 DN,其中 UID 位于特定组中

我正在使用 OpenLDAP,不幸的是它没有“memberOf”属性。通常在查询 Active Directory LDAP 时,您可以编写一个查询:

ldapsearch -Dbinduser -wbinduserpwd -Hldaps://ldapsvr.org -bdn=ldapsvr,dn=org
(&(uid={0},ou=usr,dn=ldapsvr,dn=org)(memberOf=cn=g0001,ou=grps,dn=ldapsvr,dn=org))

但现在我只剩下一个用户:

dn: uid=u0001,ou=usr,dn=ldapsvr,dn=org
cn: u0001

以及如下群组:

dn: cn=g0001,ou=grps,dn=ldapsvr,dn=org
cn: g0001
memberUid: u0001
memberUid: u0002

有人知道 ldapsearch 查询(特别是正确的过滤器)来返回用户 DN 吗?我能想到的最接近的方法是,如果该 memberUid 存在,则返回组 DN,但不返回组中用户的用户 DN。我的想法是,您可以在 ldapsearch 中查询,就像 SQL 一样:

select user.dn 
from dit 
where grp.cn{g001}.memberUid{u0001} = TRUE

答案1

我认为少于两个查询无法完成此操作:第一个查询获取uid,第二个查询定位dn

解决方法:

  1. 在 OpenLDAP 中,将组存储在groupOfNames对象中。这些对象允许member属性,其内容是成员的完整信息dn
  2. 看看memberOf 覆盖,它允许您构建反向成员资格(如在 Active Directory 中)。

相关内容