Я пишу модуль PAM для SSH, чтобы обеспечить еще один уровень аутентификации.Для этого мне нужен идентификатор терминала в close_session () и функция pam_sm_setcred () в модуле PAM, в то время как OpenSSH жестко закодировал его как «ssh».Я внес несколько изменений в код OpenSSh, чтобы он мог правильно установить идентификатор терминала.Эти изменения были:
добавлено do_pam_set_tty () в функции session_pty_req (Session * s) в session.c и добавлено do_pam_set_tty () в mm_pty_allocate () в monitor_wrap.c
Работает нормально дляroot и я получаю соответствующий tty в функциях pam_sm_cred () и pam_sm_close_session ().
Но используя тот же код, когда я пытаюсь выполнить ssh через учетную запись без полномочий root, я получаю tty в pam_sm_close_session (), но не в pam_sm_cred ().Я не уверен, почему ssh ведет себя по-разному для учетных записей root и не-root.
Есть ли что-нибудь, что вызывает поведение SSH для учетных записей root и не-root, или кто-нибудь может подсказать мне, что здесь может быть не так.Я понятия не имею, как мне поступить, и было бы здорово, если бы кто-нибудь дал мне несколько советов.