Я пытаюсь понять, что ошибочно ведет себя в моей конфигурации PAM на FreeBSD 10.0
Машина настроена с двумя разными областями аутентификации, одна из которых является аутентификацией Unix по умолчанию, а другая использует демон служб безопасности системы (sssd).
На данный момент я использую эту конфигурацию в /etc/pam.d/sshd
так как я просто хочу разрешить входы sssd из ssh.
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_sss.so
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn use_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_login_access.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
account required pam_unix.so
# session
#session optional pam_ssh.so want_agent
session optional /usr/local/lib/pam_sss.so
session optional /usr/local/lib/pam_mkhomedir.so mode=0700
session required pam_permit.so
# password
password sufficient /usr/local/lib/pam_sss.so use_authtok
#password sufficient pam_krb5.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
Если я правильно понял, когда пользователь sssd входит в систему, он попадает в auth sufficient /usr/local/lib/pam_sss.so
линия и поскольку это sufficient
он войдет в систему без каких-либо проблем. Когда локальная учетная запись пользователя пытается войти в систему, она не проходит проверку sssd, но успешно pam_unix.so
используя пароль, введенный впервые, без повторного запроса пароля.
Но это не то, что происходит. Чтобы успешно войти как локальная учетная запись, я должен удалить use_first_pass
из pam_unix.so
optiions в области аутентификации, и когда пользователь входит в систему, система сначала запрашивает учетную запись sssd, но это не удается, поскольку локальные пользователи не существуют во внешней службе аутентификации. Затем система снова запрашивает тот же пароль, но аутентифицируется на pam_unix.so
модуль. И, наконец, доступ предоставляется.
Например, он ведет себя следующим образом:
ssh sssd-test.example.com -l local-user-account
Password:
Password for local-user-account@sssd-test.example.com:
Last login: Sat May 24 16:22:40 2014 from 192.168.1.100
FreeBSD 10.0-RELEASE-p1 (GENERIC) #0: Tue Apr 8 06:45:06 UTC 2014
Welcome to FreeBSD!
$
Я не совсем понимаю, почему это происходит и связано ли это с account
сеанс. Что касается моего понимания PAM, конфигурация должна быть правильной.
Заранее спасибо,
Что ж, мои предположения о работе PAM были правильными.
В pam_sss.so
модуль ожидал аргумента forward_pass
передать пароль для других модулей PAM, так как pam_unix.so
модуль. Так что просто поставив эту опцию, сделайте свою работу. Результирующая строка была:
auth sufficient /usr/local/lib/pam_sss.so forward_pass
Что закончилось другой проблемой. Если sssd или даже область аутентификации sssd не работают, вы не сможете войти в систему, так как pam_sss.so
модуль не будет работать, и, следовательно, пароль не будет отправлен.
Таким образом, очевидным выбором было поставить pam_unix.so
перед pam_sss.so
и пусть все будет "достаточно" с красивой pam_deny.so
в конце. Это способ решения проблемы в Linux, но, похоже, он не работает во FreeBSD.
После некоторого поиска в списках рассылки правильный способ сделать это во FreeBSD - использовать странный порядок в PAM:
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient pam_unix.so no_warn
auth sufficient /usr/local/lib/pam_sss.so use_first_pass
auth required pam_unix.so no_warn use_first_pass
Так положив pam_unix.so
два раза в PAM, первый как sufficient
и последний как required
Покажи фокус. Я не знаю, почему это происходит, но это работает и кажется правильным.