如何列出 LDAP 组的所有组成员



我有带有LDAP的Plone 3,里面有很多组和用户。我想获取特定组的所有组成员。

groupe_id = "mygroup"
gtool = getToolByName(self, 'portal_groups')
group = gtool.getGroupById(groupe_id)
members = group.getAllGroupMembers()

在这里,成员总是返回[]但实际上,我的组中确实有一些用户。

简短的回答可能是:你不能。

当您(或 Plone)向 ldap 询问用户列表时,ldap 可能会决定它找到太多结果,而是简单地返回一个基本上是空的列表。 因此,通常最好更改"用户和组"控制面板中的设置并打开"许多用户",也可能打开"许多组"。 例如,这可确保不显示"显示所有用户"按钮。

在 collective.setdefaulteditor 中,我通过使用 portal_membership.searchForMembers(login=char) 来解决这个问题,然后对 a、b 等进行 char 迭代

(顺便说一下,这不会搜索特定组中的成员。

这真的很丑,所以我希望有一个更好的答案,以便我可以更新这个工具。

我不了解 plone,但它基于 posix 结构,您可以轻松做到这一点。

import ldap
con = ldap.initialize('ldap://127.0.0.1')
con.simple_bind_s('cn=myuser', 'oh_yeah')
groups = con.search_s('dc=rkf,dc=org',
                      ldap.SCOPE_SUBTREE,
                      'objectclass=posixgroup',
                      ['memberuid'])
for a in groups:
    print 'Group:', a[0]
    print 'Members:', a[-1].get('memberuid')

相关内容

  • 没有找到相关文章

最新更新