
次の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
現在のチェーン状態に応じてロジックを調整できます。argv
pam_sm_authenticate