最後の実行PAMモジュールから認証ステータスを取得する方法

最後の実行PAMモジュールから認証ステータスを取得する方法

次のPAMスタックがある場合:

auth required default_pam.so
auth requisite my_custom_pam.so
....

カスタムPAM認証モジュール(関数などpam_sm_authenticate)で使用するための最後/前のPAMモジュールの実行で認証ステータスを取得するにはどうすればよいですか?

ベストアンサー1

まず、他のモジュールの結果に応じてモジュールのコードロジックを変更することは多少変わりません。これは通常、どの状況でどのモジュールが呼び出されるかを制御するなどのrequired制御フラグを使用して実行されます。requisite現在のチェーン状態、前のモジュールの結果)。これを念頭に置いて、次のようにモジュールの動作を調整することを想像できます。

auth [success=1] default_pam.so
auth [success=done default=die] my_custom_pam.so default_failed
auth requisite my_custom_pam.so

チェーンには次のロジックがあります。

  • 基本モジュールが成功した場合は、検証済みとしてマークし(暗黙的にsuccess=1)、1つのモジュールをスキップします。チェーンはmy_custom_pam引数なしで呼び出しに達し、成功する必要があります(requisite)。
  • 基本モジュールが失敗した場合は、何もスキップしないでください。チェーンに達するとmy_custom_pamパラメータとして呼び出されますdefault_failed。チェーンはこのモジュール(doneまたはdie)の後に停止し、全体的な結果を決定します。

ここで重要な要素は に渡されるパラメータですmy_custom_pam。ルーチンをチェックすると、argc現在のチェーン状態に応じてロジックを調整できます。argvpam_sm_authenticate

おすすめ記事