もう 1 つの認証レイヤーを適用するために、SSH 用の PAM モジュールを作成しています。そのためには、PAM モジュールの close_session() および pam_sm_setcred() 関数に端末 ID が必要ですが、OpenSSH はそれを「ssh」にハードコードしました。端末 ID を適切に設定できるように、OpenSSh コードにいくつかの変更を加えました。これらの変更は次のとおりです。
session.c の session_pty_req(Session *s) 関数に do_pam_set_tty() を追加し、monitor_wrap.c の mm_pty_allocate() 関数に do_pam_set_tty() を追加しました
ルートでは問題なく動作し、pam_sm_cred() および pam_sm_close_session() 関数で適切な tty を取得します。
しかし、同じコードを使用して、root 以外のアカウントを介して ssh を試行すると、pam_sm_close_session() で tty が取得されますが、pam_sm_cred() では取得されません。root アカウントと非 root アカウントで ssh の動作が異なる理由がわかりません。
root アカウントと非 root アカウントの SSH 動作をトリガーするものはありますか、またはここで何が問題なのかを誰かが教えてくれますか? どうすればよいのかわかりません。誰かが私にいくつかの指針を与えることができれば素晴らしいことです.