ldapsearchを使用したグループメンバーのリスト


12

私たちの企業のLDAPディレクトリは、Snow Leopard Serverのオープンディレクトリのセットアップに格納されています。この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

これにより、リモート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

ただし、「コンテナ」ではなく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

本当に欲しいのは、グループメンバーシップに基づいてフィルター処理された上位の例のユーザーのリストですが、メンバーシップはユーザーアカウント側ではなくグループ側から設定されているようです。これをフィルタリングして、必要なものだけをエクスポートする方法が必要ですよね?

回答:


4

私はLDAPを使用していますが、特定のブランドのサーバーは使用していません。

私が最初に試したいのは、あなたの例のように制限するのではなく、すべての属性を引き出すユーザーの検索です。

ldapsearch -xLLL -H ldap://server.domain.net \
    -b "cn=users,dc=server,dc=domain,dc=net" uid=username1 \* +

多くの場合、ユーザーのグループ名またはグループDNをリストする「memberOf」属性がユーザーにあり、グループ内の情報と同期が保たれます。それがあれば、それはあなたが望むことをする最も簡単な方法です。

*すべてのユーザー属性(デフォルトの動作)をつかむだろうと+、すべての操作上の属性(特別な属性を)つかむだろう。


これは古いスレッドですが、OpenLDAP(Open Directoryの基礎)memberOfでは操作属性であり、明示的に要求する必要があることに注意する必要があります。単なるldapsearchここで提案のように戻りませんmemberOf、それが存在する場合でも、。memberOfOS XとOpen Directoryでこれがどのように処理されるかはわかりませんが、オーバーレイは通常デフォルトでは有効になっていません。
ダフ

@daff私は... +は、すべての操作上の属性を取得する必要があります信じて
freiheit

ああ、確かに。更新されたldapsearch作品は広告どおりに機能します。
ダフ

0

ユーザーオブジェクトを異なるコンテナに配置してグループを表現することを目指していますか?お気に入り:

dn: uid=username1,cn=users,cn=accounting,dc=server,dc=domain,dc=net
...
dn: uid=username2,cn=users,cn=engineering,dc=server,dc=domain,dc=net
...

もしそうなら、LDIFをマッサージするスクリプトを書く必要があると思います。優れたPython-LDAPモジュールを試してください。

どうしてそんなことをしたいのか疑問に思うでしょう。ユーザーが複数のグループに属しているのは面倒であり、Open Directoryの規則に反しています。すべてのユーザーオブジェクトとグループオブジェクトをOpenLDAPサーバーにコピーし、ユーザーオブジェクトが存在するコンテナーではなく、グループメンバーシップに基づいてクエリを実行することはできませんか?


0
ldapsearch -x \
-b "cn=<your group name>,ou=group,dc=<your org>,dc=com" \
-H ldaps://<ldap server>:<port>

これは非常にうまく機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.