1

もう 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 動作をトリガーするものはありますか、またはここで何が問題なのかを誰かが教えてくれますか? どうすればよいのかわかりません。誰かが私にいくつかの指針を与えることができれば素晴らしいことです.

4

1 に答える 1

0

私は解決策を得ました。これは特権の分離によるものでした。認証後の特権分離は、rootユーザーに対しては無効になっており、デフォルトでは他のユーザーに対して有効になっています。ttyを機能させるために、/ etc / ssh/sshd_configファイルで特権の分離を無効にしました。

詳細については、http: //www.citi.umich.edu/u/provos/papers/privsep.pdfをご覧ください。

于 2011-02-19T07:32:33.197 に答える