Active Directoryに登録されているWindowsのユーザを、ldapを用いて検索するには以下のようにする
以下は一行
ldapsearch -x -D 'cn=<ユーザ名>,cn=users,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' -w <パスワード> -H 'ldap://<ドメインコントローラ>/' -b 'dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' '(&(objectclass=user)(memberOf=cn=<グループ名>,cn=builtin,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>))'
これだとすべてのユーザが一覧されてしまうので、指定したグループに属するユーザだけを検索してみる
ビルトイングループの場合はこれでいいが、後から作成したグループの場合だと cn=builtinは不要
以下は一行
ldapsearch -x -D 'cn=<ユーザ名>,cn=users,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' -w <パスワード> -H 'ldap://<ドメインコントローラ>/' -b 'dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' '(&(objectclass=user)(memberOf=cn=<グループ名>,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>))'
さて、ouを追加し、そこにグループを作成した場合はこんな感じになる
以下は一行
ldapsearch -x -D 'cn=<ユーザ名>,cn=users,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' -w <パスワード> -H 'ldap://<ドメインコントローラ>/' -b 'dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>' '(&(objectclass=user)(memberOf=cn=<グループ名>,ou=<組織名>,dc=<nLD>,dc=<(n-1)LD>,...,dc=<2LD>,dc=<TLD>))'
つまり、ユーザはどの階層にあってもいいが、グループは正しい階層を指定しないと検索できないようである
フィルタ条件で memberof属性を絞り込んでいる部分が、たとえばmemberof=*cn=<グループ名>*のように記述できれば、グループを作った階層とは無関係にできるのだが、どうしてもエラーになってしまう