私が達成したいのは、ユーザーにパスワードを要求する前後に実行されますが、コンピュータが正常に終了しない限り、コンピュータへのアクセスを処理しない対話型プログラムです。わかりやすくするために、次のようになります。
まず、ユーザー名とパスワードを入力してから、ランダムに生成された単純な数学の問題に正確に答えて、自分のコンピュータにアクセスしたいと思います。
これを行うには、次のシステム認証ファイルを使用します。
auth required pam_unix.so try_first_pass nullok nodelay
auth optional pam_faildelay.so delay=600000
auth optional pam_exec.so stdout /home/math
auth optional pam_permit.so
auth required pam_env.so
問題は、mathと呼ばれるプログラムがPAMからEOFを自動的に読み取って事実上役に立たなくなるため、ユーザー入力を処理できないことです。また、以下で問題のある行のバリエーションを試しましたが、この場合はパスワードを読みますが、これも私が望むものではありません。
auth optional pam_exec.so stdout expose_authtok /home/math
ベストアンサー1
PAMステージには標準出力/標準入力はありません。 I / Oを実行するにはpam_conv(3)
Viaを呼び出す必要がありますpam_get_item(3)
。
良い例は次のとおりです。ben.akrin.com関連するCソースコードの例が含まれています。