2011-02-10 7 views
1

SSH用のPAMモジュールをもう1つ作成して認証を強化しています。そのためには、OpenSSHが "ssh"をハードコードしている間に、PAMモジュールのclose_session()とpam_sm_setcred()関数でターミナルIDが必要です。私はOpenSShコードを少し変更して、端末IDを適切に設定できるようにしました。これらの変更は以下の通りであった。rootとroot以外のアカウントとしてログインしているときのOpenSSHの動作

はsession.c でdo_pam_set_tty()session_pty_req中(セッション* S)機能を追加し、do_pam_set_ttyを追加()monitor_wrap.c

でmm_pty_allocate()関数の中でそれは根のため正常に動作し、I pam_sm_cred()とpam_sm_close_session()関数で適切なttyを取得します。

しかし同じコードを使って、私がroot以外のアカウントを使ってsshしようとすると、pam_sm_close_session()ではttyを取得していますが、pam_sm_cred()ではそうではありません。 sshがrootアカウントとroot以外のアカウントで異なる動作をする理由はわかりません。

rootアカウントとroot以外のアカウントのSSH動作をトリガーするものはありますか?私はどのように進むことができるのか分からず、誰かが私にいくつかの指針を与えることができれば素晴らしいだろう。

答えて

0

私は解決策を得ました。特権の分離によるものです。認証後の権限分離は、ルートユーザーに対しては無効になっており、既定では他のユーザーに対して有効になっています。 ttyを動かすために、私は/ etc/ssh/sshd_configファイルで権限分離を無効にしました。

詳細については、 http://www.citi.umich.edu/u/provos/papers/privsep.pdf

関連する問題