Поведение OpenSSH при входе в систему как root и не-root аккаунт - PullRequest
1 голос
/ 10 февраля 2011

Я пишу модуль 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, или кто-нибудь может подсказать мне, что здесь может быть не так.Я понятия не имею, как мне поступить, и было бы здорово, если бы кто-нибудь дал мне несколько советов.

1 Ответ

0 голосов
/ 19 февраля 2011

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

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

...