我正在爲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帳戶或任何人都可以建議我什麼可能是錯誤的。我不知道我該如何繼續,如果有人能給我一些提示,這將是非常棒的。