2011-02-10 2 views
1

Я пишу модуль PAM для SSH для обеспечения еще одного уровня аутентификации. Для этого мне нужен идентификатор терминала в функции close_session() и pam_sm_setcred() в модуле PAM, в то время как OpenSSH жестко закодировал его «ssh». Я сделал несколько изменений в коде OpenSSh, чтобы правильно установить идентификатор терминала. Эти изменения были:Поведение OpenSSH при входе в систему как учетная запись root и non-root

добавил do_pam_set_tty() в session_pty_req (Session * с) функции в session.c и добавил do_pam_set_tty() в mm_pty_allocate() функция в monitor_wrap.c

Он отлично работает для корня и I получить соответствующую функцию tty в функции pam_sm_cred() и pam_sm_close_session().

Но используя тот же код, когда я пытаюсь выполнить ssh через учетную запись без root, я получаю tty в pam_sm_close_session(), но не в pam_sm_cred(). Я не уверен, почему ssh ведет себя по-разному для учетных записей root и non-root.

Есть ли что-нибудь, что вызывает поведение SSH для учетных записей root и non-root, или кто-нибудь может предложить мне, что здесь может быть неправильно. Я понятия не имею, как я могу продолжить, и было бы здорово, если бы кто-то мог дать мне несколько указателей.

ответ

0

У меня есть решение. Это было связано с разделением привилегий. Разделение привилегий после авторизации отключено для пользователей root и включено для других пользователей по умолчанию. Чтобы заставить работу tty работать, я отключил разделение привилегий в файле/etc/ssh/sshd_config.

Для получения дополнительной информации: http://www.citi.umich.edu/u/provos/papers/privsep.pdf

Смежные вопросы