LDAP ネームサービスは、特定の方法で構造化されている場合にのみ、DIT を使用できます。必要に応じて SSD を使用して、LDAP ネームサービスがデフォルト以外の場所を検索することを許可できます。デフォルトスキーマで指定された属性やオブジェクトクラスの代わりに、別の属性やオブジェクトクラスを定義することもできます。ldaplist -v コマンドを使用するとデフォルトフィルタが一覧表示されます。
スキーママッピングを使用する場合、マッピングされた属性の構文がマッピング先属性と一致していることを確認する必要があります。たとえば、単一値属性は単一値属性にマッピングする必要があり、属性の構文が同じである必要があります。また、マッピングされたオブジェクトクラスに適切な必須属性が割り当てられていることを確認します。
serviceSearchDescriptor 属性は、LDAP ネームサービスクライアントが特定のサービスに関する情報を検索する方法と場所を定義します。serviceSearchDescriptor には、サービス名に続き、1 つ以上のセミコロンで区切られたベース - スコープ - フィルタセットが含まれます。これらのベース - スコープ - フィルタのセットは特定のサービス専用の検索定義に使用され、指定された順番で検索されます。特定のサービスに対して複数のベース - スコープ - フィルタが指定されている場合、このサービスは、特定のエントリを検索する際、指定されたスコープおよびフィルタを保持する各ベースを検索します。
次の例では、LDAP ネームサービスクライアントは、ou=west,dc=example,dc=com 内で passwd サービスに対する単一レベルの検索を実行したあとに、ou=east,dc=example,dc=com 内で単一レベルの検索を実行します。ユーザーの username の passwd データを検索するために、各 BaseDN に対してデフォルトの LDAP フィルタ (&(objectClass=posixAccount)(uid=username)) が使用されます。
serviceSearchDescriptor: passwd:ou=west,dc=example,dc=com;ou=east, dc=example,dc=com
次の例では、LDAP ネームサービスクライアントは、ou=west,dc=example,dc=com 内で passwd サービスに対するサブツリー検索を実行します。ユーザー username の passwd データを検索するために、LDAP フィルタ (&(fulltimeEmployee=TRUE)(uid=username)) を使用してサブツリー ou=west,dc=example,dc=com が検索されます。
serviceSearchDescriptor: passwd:ou=west,dc=example, dc=com?sub?fulltimeEmployee=TRUE
特定のサービスタイプに複数のコンテナを関連付けることもできます。次の例では、サービス検索記述子が 3 つのコンテナでパスワードエントリを検索することを指定しています。
|
例の末尾の「,」は、SSD の相対ベースに defaultSearchBase が付加されることを意味します。
defaultSearchBase: dc=example,dc=com serviceSearchDescriptor: \ passwd:ou=myuser,;ou=newuser,;ou=extuser,dc=example,dc=com
LDAP ネームサービスでは、1 つ以上の属性名をその任意のサービスに再マッピングできます。属性を対応づける場合、その属性が元の属性と同じ意味および構文を必ず保持するようにしてください。userPassword 属性のマッピングによって問題が発生する可能性があることに注意してください。
既存のディレクトリサーバーで属性をマッピングする状況では、スキーママッピングを使用することを検討してください。大文字小文字のみが異なるユーザー名を使用する場合、大文字小文字を無視する uid 属性を、大文字小文字を無視しない属性に対応づける必要があります。
この属性の書式は、service:attribute-name=mapped-attribute-name です。
指定されたサービスに対して複数の属性を対応づける場合は、複数の attributeMap 属性を定義できます。
次の例では、uid および homeDirectory 属性を passwd サービスで利用する場合、常に employeeName および home 属性が使用されます。
attributeMap: passwd:uid=employeeName attributeMap: passwd:homeDirectory=home
次の例で示すように、passwd サービスの gecos 属性を複数の属性にマッピングできます。
attributeMap: gecos=cn sn title
この例では、gecos 値が、空白で区切られた cn、sn、および title 属性値のリストにマップされています。
LDAP ネームサービスでは、オブジェクトクラスをその任意のサービスに再マッピングできます。特定のサービス用に複数のオブジェクトクラスを対応づける場合、複数の objectclassMap 属性を定義できます。次の例では、posixAccount オブジェクトクラスを使用する場合、常に myUnixAccount オブジェクトクラスが使用されます。
objectclassMap: passwd:posixAccount=myUnixAccount
SSD を使用して特定のサービスにパラメータを指定しない場合、デフォルトフィルタが使用されます。特定のサービスのデフォルトフィルタを表示するには、–v オプションを指定して ldaplist コマンドを実行してください。
次の例では、filter=(&(objectclass=iphost)(cn=abcde) によってデフォルトフィルタが定義されます。
database=hosts filter=(&(objectclass=iphost)(cn=abcde) user data=(&(%s) (cn=abcde))
ldaplist コマンドは次のデフォルトフィルタのリストを生成します。ここで、%s は文字列を示し、%d は数値を示します。
hosts (&(objectclass=iphost)(cn=%s)) -------------- passwd (&(objectclass=posixaccount)(uid=%s)) -------------- services (&(objectclass=ipservice)(cn=%s)) -------------- group (&(objectclass=posixgroup)(cn=%s)) -------------- netgroup (&(objectclass=nisnetgroup)(cn=%s)) -------------- networks (&(objectclass=ipnetwork)(ipnetworknumber=%s)) -------------- netmasks (&(objectclass=ipnetwork)(ipnetworknumber=%s)) -------------- rpc (&(objectclass=oncrpc)(cn=%s)) -------------- protocols (&(objectclass=ipprotocol)(cn=%s)) -------------- bootparams (&(objectclass=bootableDevice)(cn=%s)) -------------- ethers (&(objectclass=ieee802Device)(cn=%s)) -------------- publickey (&(objectclass=niskeyobject)(cn=%s)) or (&(objectclass=niskeyobject)(uidnumber=%d)) -------------- aliases (&(objectclass=mailGroup)(cn=%s)) --------------
次の表に、getXbyY 呼び出しで使用される LDAP フィルタの一覧を示します。
|
次の表に getent 属性フィルタの一覧を示します。
|