【问题标题】:How to list all groups members of a ldap group?如何列出 ldap 组的所有组成员?
【发布时间】:2012-11-16 09:31:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: ldap plone python-ldap


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 这很奇怪。当我使用 LDAPBrowser 时,我可以浏览任何组的所有成员...
    【解决方案2】:

    我不知道 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      相关资源
      最近更新 更多