このセクションでは、発生する可能性のある LDAP 構成に関する問題とその解決方法について説明します。
LDAP クライアントソフトウェアは、ホスト検索に対して (gethostbyname() や getaddrinfo() によって返されるホスト名などの) 完全修飾ホスト名を返します。格納されている名前が修飾されている場合、つまり 1 つ以上のドットが含まれている場合、クライアントは名前をそのまま返します。たとえば、格納されている名前が hostB.eng であれば、返される名前も hostB.eng です。
LDAP ディレクトリに格納された名前が修飾されていない場合、つまりドットが含まれない場合、クライアントは名前にドメイン部分を付加します。たとえば、格納されている名前が hostA の場合は、返される名前は hostA.domain-name です。
DNS ドメイン名が LDAP ドメイン名とは異なる場合、ホスト名が完全修飾名として格納されていないかぎり、LDAP ネームサービスはホスト名を提供するために使用できません。
LDAP クライアントはログイン中、ユーザー認証に PAM モジュールを使用します。UNIX 標準の PAM モジュールでは、パスワードをサーバーから読み込みクライアント側で検査します。このプロセスは、次のいずれかの理由で失敗することがあります。
ldap が、ネームサービススイッチ内の passwd データベースに関連付けられていない。
プロキシエージェントは、サーバーリストのユーザーの userPassword 属性を読み取れません。プロキシエージェントは比較のためにクライアントにパスワードを返すので、少なくともプロキシエージェントがパスワードを読み取ることを許可する必要があります。pam_ldap にはパスワードへの読み取りアクセスは必要ありません。
プロキシエージェントが適切なパスワードを保持していない
該当するエントリに shadowAccount オブジェクトクラスが定義されていない
パスワードが定義されていない
ldapaddent を使用する場合、–p オプションを使用してパスワードをユーザーエントリに確実に追加する必要があります。ldapaddent を –p オプションなしで使用すると、ldapaddent を使用して /etc/shadow ファイルも追加しないかぎり、ユーザーのパスワードはディレクトリ内に格納されません。
LDAP サーバーに到達することができない
サーバーのステータスを確認します。
# /usr/lib/ldap/ldap_cachemgr -g
pam.conf の構成が不正である
LDAP 名前空間でユーザーが定義されていない
pam_unix_* モジュールに関して NS_LDAP_CREDENTIAL_LEVEL が anonymous に設定されているため、匿名ユーザーが userPassword を使用できない。
パスワードが crypt 形式で格納されていない
アカウント管理をサポートするように pam_ldap が構成されている場合は、次のいずれかの原因でログインに失敗します。
ユーザーのパスワード期限が切れている
ログインを何回も行なったために、ユーザーアカウントがロックされる
管理者がユーザーアカウントを非アクティブにした
ユーザーが、ssh や sftp などの、パスワードを使用しないプログラムを使用してログインしようとした。
ユーザー別認証および sasl/GSSAPI を使用している場合、Kerberos の一部のコンポーネントまたは pam_krb5 構成が正しく設定されない可能性があります。Kerberos の問題の解決に関する詳細は、Oracle Solaris 11.3 での Kerberos およびその他の認証サービスの管理を参照してください。
LDAP データベースは、検索パフォーマンス向上にインデックスを使用します。Oracle およびほかのベンダーから提供される LDAP ドキュメントに記されている一般的な属性セットのインデックスを作成する必要があります。また、独自のインデックスを追加して、パフォーマンスの向上を図ることができます。
profileName 属性で –init オプションを使用するときに、ldapclient コマンドがクライアントの初期化に失敗する理由としては、次のものが考えられます。
コマンド行で不正なドメイン名が指定された
指定されたクライアントドメインのエントリポイントを表す nisDomain 属性が DIT (ディレクトリ情報ツリー) 内に設定されていない
アクセス制御情報がサーバー上で適正に設定されていないため、LDAP データベース内の匿名検索が無効になっている。
ldapclient コマンドに間違ったサーバーアドレスが渡された。ldapsearch コマンドを使用してサーバーアドレスを確認してください。
ldapclient コマンドに間違ったプロファイル名が渡された。ldapsearch コマンドを使用して DIT 内のプロファイル名を確認してください。
トラブルシューティングを支援するために、クライアントのネットワークインタフェースで snoop を使用して、どのようなトラフィックが送信されるかを検査し、サーバーが何と対話しているかを判断します。
–g オプションを指定して ldap_cachemgr デーモンを実行して、現在のクライアント構成や統計情報を表示すると、デバッグに役立つことがあります。
このコマンドによって、すべての LDAP サーバーのステータスを含めて、現在の構成および統計が標準出力に表示されます。このコマンドを実行するのに、スーパーユーザーになる必要はありません。
ldapclient コマンドがハングアップした場合、Ctrl-C キーを押して、以前の環境を復元してから終了してください。このようなイベントでは、サーバーが動作していることをサーバー管理者に確認してください。
プロファイルまたはコマンド行に指定されたサーバーリスト属性で、サーバー情報が適正であることを確認してください。