LDAPの検索操作
LDAPの操作モデル
LDAPクライアントがLDAPサーバに対して要求できる操作を以下の表にまとめます。
検索操作
検索操作はLDAPの操作の中でも複雑な部類に入ります。
検索の際には、「検索ベース」、「スコープ」、「検索フィルタ」というパラメータを意識する必要があります。
検索ベース
検索ベース(search base)は、DITの中で検索の起点となるエントリを言います。
スコープ
スコープ(scope)は、検索ベースからの検索範囲を指定するためのものです。
例えば、次のようなツリーがあるとします。
検索ベースを(dc=exmaple,dc=valinux,dc=jp)とすると、検索範囲は次のように表すことができます。なお、○が検索範囲、×が検索範囲外です。
検索フィルタ
検索フィルタ(search filter)は、検索するエントリの属性の条件を指定します。
検索フィルタの文字列表現の書式は、RFC4515 (Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters)に定義されています。
- 同値(=)
リスト: 検索フィルタ(同値)
mail=user001@example.valinux.jp
属性mailが、user001@example.valinux.jpであるエントリのみが検索されます。
-
- 近値(~=)
- リスト: 検索フィルタ(近値)
cn~=test
指定値にほぼ等しい値を持つエントリが検索されます。
- 以上(>=)
リスト: 検索フィルタ(以上)
gidNumber>=600
gidNumberが600以上のエントリが検索されます。
- 以下(<=)
リスト: 検索フィルタ(以下)
gidNumber<=600
gidNumberが600以下のエントリが検索されます。
- 存在(=*)
リスト: 検索フィルタ(存在)
cn=*
cnを含む全てのエントリが検索されます。
- 部分文字列( 属性=[ <先頭> ] any [ <末尾> ] )
リスト: 検索フィルタ(先頭一致)
uid=user*
uidが「user」から始まるエントリが検索されます。
- リスト: 検索フィルタ(含む場合)
mail=*dev*
mailに「dev」を含むエントリが検索されます。
- 論理積(&)
リスト: 検索フィルタ(論理積)
(&(cn=taro)(sn=yamada))
cnが「taro」で、かつsnが「yamada」であるエントリを検索します。
- 論理和(|)
リスト: 検索フィルタ(論理和)
(|(cn=taro)(cn=ichiro))
cnが「taro」または「ichiro」であるエントリを検索します。
- 否定(!)
リスト: 検索フィルタ(否定)
(!(cn=taro))
cnが「taro」でないエントリを検索します。