以root身份和非root帐户登录时OpenSSH的行为

时间:2011-02-10 09:48:15

标签: ssh openssh tty pam

我正在为SSH编写PAM模块以强制执行另一层身份验证。为此,我需要在PAM模块中的close_session()和pam_sm_setcred()函数中使用终端ID,而OpenSSH将其硬编码为“ssh”。我在OpenSSh代码中做了一些更改,因此可以正确设置终端ID。这些变化是:

在session.c中的session_pty_req(Session * s)函数中添加了do_pam_set_tty() 并在monitor_wrap.c中的mm_pty_allocate()函数中添加了do_pam_set_tty()

它适用于root,我在pam_sm_cred()和pam_sm_close_session()函数中获得了适当的tty。

但是使用相同的代码,当我尝试ssh通过非root帐户时,我在pam_sm_close_session()中获取tty但在pam_sm_cred()中没有。我不确定为什么ssh对root和非root帐户的行为有所不同。

是否存在触发root和非root帐户的SSH行为的任何内容,或者有人可以告诉我这里可能出错的地方。我不知道如何继续进行,如果有人能给我一些指示,那就太好了。

1 个答案:

答案 0 :(得分:0)

我得到了解决方案。这是由于特权分离。对root用户禁用post-auth权限分离,默认情况下为其他用户启用。为了解决这个问题,我在/ etc / ssh / sshd_config文件中禁用了权限分离。

了解更多详情: http://www.citi.umich.edu/u/provos/papers/privsep.pdf