OpenDirectory/LDAP 查询语法,用于查找 GADS 组中所有用户

OpenDirectory/LDAP 查询语法,用于查找 GADS 组中所有用户

我想构建一个 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))

答案1

Apple Open Directory 不使用 memberOf 用户属性(OSX Server 10.7.5)。

相反,它仅依赖 memberUid 组属性来枚举属于给定组的用户。因此,无法通过查询用户对象来确定用户的组成员身份,而必须枚举与该用户对应的 memberUid 属性的所有组,才能获得特定于用户的组成员身份的完整列表。

当然,可以修改模式以添加 memberOf 属性,但还必须完成必要的工作,以保持组 memberUid 属性值和用户 memberOf 属性值同步。

这与支持 memberOf 用户属性且包含保持属性对值同步的机制的 ldap 实现形成对比(Microsoft Active Directory、带有 memberOf 覆盖的 OpenLDAP)。

[Google Apps Directory Sync 管理指南][1]第 28 页指出:

There are three ways to mark your Google Apps users in LDAP:
• OU: Set up an organizational unit (OU) and move Google Apps users into that unit.
• Group: Create a new group in LDAP, and add Google Apps users as a member of that group.
• Custom Attribute: Create a custom attribute for your users, and set that attribute for new users.

我猜您可以通过其中任何一种方式解决该任务,但只有您自己将 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

答案2

我通常使用 Softerras LDAP Browser 浏览 LDAP 树,以便更快地找到正确的语法/路径。有很多免费的 ldap 浏览器,这只是我偶然发现的一个,没有费心去交换。

如果你有 Mac 客户端,那么 osx 似乎也有几个替代方案:http://en.m.wikipedia.org/wiki/List_of_LDAP_software

相关内容