我正在尝试获取某个用户是成员的所有组。
我在ldap中有以下结构:
o=myOrganization
ou=unit1
cn=admin
cn=guess
并且
ou=users
cn=ann
cn=bob
cn=carla
myOrganization
是Organization
的一个实例。unit1
是OrganizationUnit
的一个实例。admin
和guess
都是GroupOfNames
,并且每个人都是成员。ann
、bob
和carla
都是Person
的实例。
目前,我正在使用Python上的ldap模块,以下是我的代码:
import ldap
l = ldap.initialize("ldap://my_host")
l.simple_bind_s("[my_dn]", "[my_pass]")
ldap_result = l.search("[BASE_DN]", ldap.SCOPE_SUBTREE, "(&(objectClass=Person)(cn=ann))", None)
res_type, data = l.result(ldap_result, 0)
print(data)
我能够获取用户名为ann
的用户,但是我该如何获取Ann
所属的组?
我尝试了这个页面中的以下方法:
search_filter='(|(&(objectClass=*)(member=cn=ann)))'
results = l.search_s([BASE_DN], ldap.SCOPE_SUBTREE, search_filter, ['cn',])
但是我得到了一个空列表。我也尝试了各种查询组合,但它们都返回空值。
PS:我正在使用Linux机器上的OpenLDAP。
pyad
包。我知道这对你的确切问题并不是特别有帮助,但我发现pyad
比python-ldap更好用。这将非常简单,例如user.get_membersOf()
,它还允许您指定范围以及是否递归地包括子组。 - sytech