2011-02-10 136 views
1

我正在爲SSH寫一個PAM模塊以強制執行另一層認證。爲此,我需要在PAM模塊的close_session()和pam_sm_setcred()函數中使用終端ID,而OpenSSH將其硬編碼爲「ssh」。我在OpenSSh代碼中做了一些改動,所以它可以正確設置終端ID。這些變化是:以root用戶和非root帳戶登錄時的OpenSSH行爲

在session_pty_req(會話* S)在session.c 功能

加入do_pam_set_tty()和mm_pty_allocate加入do_pam_set_tty()()在monitor_wrap.c功能

它工作正常的根和我在pam_sm_cred()和pam_sm_close_session()函數中獲得適當的tty。

但是使用相同的代碼,當我嘗試通過非root帳戶ssh時,我在pam_sm_close_session()中獲取tty,但在pam_sm_cred()中未收到tty。我不確定爲什麼ssh對root和非root帳戶的行爲不同。

是否有什麼會觸發SSH行爲的根和非root帳戶或任何人都可以建議我什麼可能是錯誤的。我不知道我該如何繼續,如果有人能給我一些提示,這將是非常棒的。

回答

0

我得到了解決方案。這是由於特權分離。默認情況下,根用戶禁用後驗證特權分隔,併爲其他用戶啓用後驗證特權分隔。爲了使tty能夠正常工作,我在/ etc/ssh/sshd_config文件中禁用了特權分隔。

欲瞭解更多詳情: http://www.citi.umich.edu/u/provos/papers/privsep.pdf

相關問題