如何在ldap中获取用户组

如何在ldap中获取用户组,ldap,docker-compose,openldap,ldap-query,Ldap,Docker Compose,Openldap,Ldap Query,我正在使用带有phpldapadmin的openldap,并且我正在尝试检查某个用户的组。 这是我的计划 这是我试过的,但没用 docker-compose exec openldap ldapsearch -x -H "ldap://openldap" -D "cn=admin,dc=openldap" -w admin -b "cn=root,ou=django,dc=openldap" '(&(objectClass=*)(member=cn=superuser,ou=group

我正在使用带有phpldapadmin的openldap,并且我正在尝试检查某个用户的组。 这是我的计划

这是我试过的,但没用

docker-compose exec openldap ldapsearch -x -H "ldap://openldap" -D "cn=admin,dc=openldap" -w admin -b "cn=root,ou=django,dc=openldap" '(&(objectClass=*)(member=cn=superuser,ou=groups,dc=openldap))'

PS:我不熟悉ldap,我正在使用的图像是什么?

关于ldap和查询的文献有很多,它们解释了如何搜索组,并举例说明

首先,baseDN(-b)应该是层次结构的顶部:
dc=openldap

其次,您是从组中搜索的,因此过滤器应该包括
(objectclass=groupOfNames)

最后,您正在搜索用户所属的组,过滤器应该是
(member=cn=root,ou=django,dc=openldap)

然后,生成的查询是:

ldapsearch-x-H”ldap://openldap“-D”cn=admin,dc=openldap“-w admin-b”dc=openldap“(&(objectClass=groupOfNames)(member=cn=root,ou=django,dc=openldap))”


这将返回组条目。如果您只对名称感兴趣,请在查询末尾添加
dn

要获取user1的用户组,此搜索筛选器应足够:

(&(memberUid=user1))
但是请注意,组搜索属性可能因开放ldap配置而异。它可以是member、uniqueMember、memberUid等


LDAP的其他变体可能要求您使用:-b ou=Group,dc=example,dc=com

ldapsearch -h ldap -D cn=admin,dc=example,dc=com -x -w password -b ou=Group,dc=example,dc=com -s sub '(&(objectClass=groupOFNames)(memberuid=user1))' DN

团体是我最喜欢的组织。。我为什么要加上这个?objectclass=groupOfNames如果在ou=groups下搜索所有条目(具有子树范围),将返回ou=groups条目。如果您只需要组,则需要指定适当的筛选器,例如
(objectclass=groupOfNames)
(或用于组的任何objectclass值)。请阅读有关如何正确设置代码格式的帮助页面。