%20%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99.png)
私は LDAP、特に非 AD LDAP の使用に少し慣れていません。RedHat Directory Server を使用しており、特定のユーザー名を含む属性cn
を使用するからすべてのユーザー (およびその属性) を取得する LDAP クエリ (具体的にはフィルター) を実行しようとしていました。これは「スーパーユーザー」を管理する方法であり、他のすべてのユーザーは必要に応じてnisNetgroupTriple
特定の にドロップされます。そこで私の質問は、 を使用して検索およびフィルター処理し、からユーザーと属性 ( 、、、 ) を取得するにはどうすればよいかということです。テストとして行ったからのサンプル出力を次に示します。cn
ldapsearch
uid
sn
givenName
mail
cn
ldapsearch
# ldapsearch -xLLL -h server-p 389 -D "cn=Directory Manager" -b "cn=linux,dc=example,dc=org" \* + -W
Enter LDAP Password:
dn: cn=linux,dc=example,dc=org
nisNetgroupTriple: (,user1,)
nisNetgroupTriple: (,user2,)
nisNetgroupTriple: (,user3,)
cn: linux
objectClass: top
objectClass: nisNetgroup
memberNisNetgroup: linux
description: Linux
必要なのは、各ユーザーの属性(、、など)を取得することuser1
です。user2
user3
# ldapsearch -xLLL -h server -p 389 -D "cn=Directory Manager" -b "dc=example,dc=org" -x '(&(objectClass=posixAccount)(uid=user1))' -W
Enter LDAP Password:
dn: uid=user1,ou=People,dc=example,dc=org
userPassword:: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
givenName: User
sn: One
loginShell: /bin/false
gidNumber: 1000
uidNumber: 10054
mail: user1@localhost
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
objectClass: posixAccount
uid: user1
cn: User One
homeDirectory: /home/user1
インターネット上で、これを行う方法 (実行できる場合) について、意味のある情報を見つけることができません。さらに、LDAP のこの部分を完全に理解していない可能性があります。これが、1) 何も見つからない、2) 自分で解決する方法がわからない理由である可能性があります。
どのような助けでも大歓迎です。
答え1
次のコマンドは、設定に応じてユーザー名を検索するのに役立ちます。
ldapsearch -h localhost -D "cn=Directory Manager" -b "dc=example,dc=org" -W -x "(&(objectClass=nisnetgroup)(nisNetgroupTriple=\(,user1,\)))" cn | grep dn
表示されるのは cn のみです。簡単な grep を実行すると、出力は短く正確になります。そのグループに追加/変更するとさらに役立ちます。
この LDAP クエリを試してみて、何か問題があればお知らせください。