我想构建一个 LDAP 查询来查找属于我的 OS X 10.9 服务器上的“Google Apps 用户”组(简称:googleappsusers)的所有用户。当我在 Google Apps Directory Sync (GADS) 中运行以下查询时,它返回零用户,尽管事实上我确实在 googleappsusers 组中有一个用户。
(&(objectCategory=users)(memberOf=cn=googleappsusers,cn=groups,dc=nyc1,dc=domain,dc=com))
我通常使用 Softerras LDAP Browser 来浏览 LDAP 树以更快地找到正确的语法/路径。有很多免费的 ldap 浏览器,它只是我沿线某处捡到的,没有费心交换。
如果你有一个mac客户端,看起来osx也有几个替代品:http: //en.m.wikipedia.org/wiki/List_of_LDAP_software
Apple Open Directory 不使用 memberOf 用户属性 (OSX Server 10.7.5)。
相反,它仅依靠 memberUid 组属性来枚举作为给定组成员的用户。因此,不能通过查询用户对象来确定用户的组成员资格,而是必须枚举所有组以获取与该用户对应的 memberUid 属性,如果希望获得用户特定组成员资格的完整列表。
当然可以修改模式以添加 memberOf 属性,但还必须进行必要的工作,以保持组 memberUid 属性值和用户 memberOf 属性值同步。
这与支持 memberOf 用户属性并包含使属性对的值保持同步的机制(Microsoft Active Directory、具有 memberOf 覆盖的 OpenLDAP)的 ldap 实现形成对比。
[Google Apps Directory Sync 管理指南][1] 第 28 页指出:
我的猜测是您可以通过其中任何一个来解决任务,但是仅当您自己将 memberOf 属性添加到用户对象时,才可以向用户查询 memberOf。它被视为具有 Open Directory 的自定义属性。
ldap 对象中的某些属性为空并不是一个值得关注的问题,这只是意味着它们包含在 ldap 模式中,但尚未为 ldap 对象设置它们的值。您会在任何开箱即用的 ldap 实现中看到类似的情况。
[1] http://static.googleusercontent.com/external_content/untrusted_dlcp/www.google.com/en/us/support/enterprise/static/gapps/docs/admin/en/gads/admin/gads_admin.pdf