モジュールの続行動作または失敗動作を決定するには、PAM 構成ファイル /etc/pam.conf のエントリごとに「制御フラグ」を選択する必要があります。スタック内の各モジュールは、要求の成功や失敗を決定できます。
続行動作では、後続のモジュールをチェックするかどうかを定義します。特定のモジュールの応答によっては、追加モジュールをスキップできます。
失敗動作では、エラーメッセージのログや報告をどのように行うかを定義します。失敗には任意 (optional) と必須 (required) があります。必須の場合は、他のモジュールが正常であっても要求は必ず失敗に終わります。任意の場合は、要求が必ず失敗に終わるとは限りません。
これらのフラグはすべてのモジュールタイプに適用されますが、次の説明では、これらのフラグは認証モジュールで使用されていると仮定します。制御フラグは、次のとおりです。
binding – この制御フラグが適用されたモジュールが成功し、かつそれ以前の必須モジュールの中に失敗したものがない場合は、残りのモジュールをスキップします。失敗が返された場合は、必須の失敗を記録し、スタックの処理を続けます。
binding 制御フラグは、そのモジュールが成功した場合にそれ以後のモジュールのチェックを行わないことを除けば、 required 制御フラグに似ています。このフラグが適用されたモジュールで失敗が 1 つでもあると、ほかのモジュールからの応答がどうであれ、要求は成功とはみなされません。このフラグが適用されたモジュールが成功すると、それ以前の必須モジュールの中に失敗したものがなければ、要求は成功とみなされます。
required – この制御フラグが適用されたモジュールが成功した場合は、必須の成功を記録し、後続モジュールのチェックを続けます。モジュールが失敗した場合は、これが最初の必須の失敗であれば、エラーメッセージを保存してからスタックのチェックを続けます。これが最初の失敗でなければ、スタックのチェックを続けます。
要求が成功するために特定のモジュールの成功が欠かせない場合は、required 制御フラグを使用すべきです。このフラグが適用されたモジュールで失敗が 1 つでもあると、ほかのモジュールからの応答がどうであれ、要求は成功とはみなされません。このフラグが適用されたモジュールの 1 つが成功しても、要求の成功を意味するわけではありません。要求が成功するためには、スタックのすべての必須モジュールからの応答が成功でなければなりません。
requisite – この制御フラグが適用されたモジュールが成功した場合は、必須の成功を記録し、後続のモジュールのチェックを続けます。モジュールが失敗した場合は、必須の失敗を記録し、最初の必須の失敗であるというエラーメッセージを返し、それ以後のチェックをスキップします。
requisite 制御フラグは、モジュールが失敗した場合にそれ以後のモジュールのチェックを行わないことを除けば、 required 制御フラグに似ています。このフラグが適用されたモジュールで失敗が 1 つでもあると、ほかのモジュールからの応答がどうであれ、要求は成功とはみなされません。このフラグが適用されたモジュールの 1 つが成功しても、要求の成功を意味するわけではありません。要求が成功するためには、スタックのすべての必須モジュールからの応答が成功でなければなりません。
optional – この制御フラグが適用されたモジュールが成功した場合は、任意の成功を記録し、スタックのチェックを続けます。モジュールが失敗した場合は、任意の失敗を記録し、スタックのチェックを続けます。
optional 制御フラグは、ユーザーを認証するにはスタック内の他のモジュールのどれかが成功すれば十分であるという場合に使用します。このフラグは特定のモジュールが成功するということがそれほど重要でない場合に使用します。要求の成功または失敗は、ほかの必須の失敗または成功によって決まります。
ユーザーが作業を行ううえでアクセス権を持つ必要があるモジュールには、optional フラグを付けないでください。
sufficient – この制御フラグが適用されたモジュールが成功し、かつそれ以前の必須モジュールの中に失敗したものがない場合は、残りのモジュールをスキップします。モジュールが失敗した場合は、任意の失敗を記録し、スタックのチェックを続けます。
sufficient 制御フラグは、モジュールが成功した場合にそれ以後のモジュールのチェックを行わないことを除けば、 optional 制御フラグに似ています。このフラグが適用されたモジュールが成功すると、それ以前の必須モジュールの中に失敗したものがなければ、要求は成功とみなされます。このフラグが適用されたモジュールが失敗すると、成功したモジュールが以前になければ、要求は失敗とみなされます。
これらの制御フラグの詳細については、次の節を参照してください。次の節では、デフォルトの /etc/pam.conf ファイルについて説明します。