使用 ldapsearch 列出组成员

col*_*anm 14 ldap mac-osx-server opendirectory

我们的企业 LDAP 目录位于 Snow Leopard Server Open Directory 设置中。我正在尝试使用该ldapsearch工具导出 .ldif 文件以导入另一个外部 LDAP 服务器以进行外部身份验证;基本上是试图能够在内部和外部使用相同的凭据。

我已经开始ldapsearch工作并为我提供了“用户”OU 中所有内容的内容和属性,甚至过滤到仅我需要的属性:

ldapsearch -xLLL -H ldap://server.domain.net / 
 -b "cn=users,dc=server,dc=domain,dc=net" objectClass / 
 uid uidNumber cn userPassword > directorycontents.ldif
Run Code Online (Sandbox Code Playgroud)

这为我提供了可以导入到远程 OpenLDAP 服务器的用户和属性列表。

dn: uid=username1,cn=users,dc=server,dc=domain,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: organizationalPerson
uidNumber: 1000
uid: username1
userPassword:: (hashedpassword)
cn: username1
Run Code Online (Sandbox Code Playgroud)

但是,当我在 OD“组”而不是“容器”上尝试相同的查询时,结果是这样的:

dn: cn=groupname,cn=groups,dc=server,dc=domain,dc=net
objectClass: posixGroup
objectClass: apple-group
objectClass: extensibleObject
objectClass: top
gidNumber: 1032
cn: groupname
memberUid: username1
memberUid: username2
memberUid: username3
Run Code Online (Sandbox Code Playgroud)

我真正想要的是根据组成员身份过滤的顶部示例中的用户列表,但看起来成员资格是从组方面设置的,而不是用户帐户方面。必须有一种方法可以过滤掉它并只导出我需要的东西,对吗?

fre*_*eit 5

我使用 LDAP,但不使用特定品牌的服务器。

我要尝试的第一件事是搜索用户提取他们的所有属性,而不是像您的示例那样限制它。

ldapsearch -xLLL -H ldap://server.domain.net \
    -b "cn=users,dc=server,dc=domain,dc=net" uid=username1 \* +
Run Code Online (Sandbox Code Playgroud)

用户通常有一个“memberOf”属性,用于列出用户所在组的组名或组 DN,与组中的信息保持同步。如果它在那里,这是做你想做的最简单的方法。

*会抓住所有的用户属性(默认行为),并且+将抓住所有的操作属性(特殊属性)。