Мне нужно запретить пользователям проходить аутентификацию через Kerberos, когда зашифрованный /home/users
еще не был смонтирован. (Это сделано для того, чтобы не повредить точку монтирования ecryptfs)
В настоящее время у меня есть эти строки в /etc/pam.d/common-auth
:
auth required pam_group.so use_first_pass
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 try_first_pass
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
Я планирую использовать pam_exec.so для выполнения скрипта, который будет [ 114], если монтирования ecyptfs еще не готовы.
Делая это:
auth required pam_exec.so /etc/security/check_ecryptfs
заблокирует меня навсегда, если ecryptfs по какой-то причине не удастся. В таком случае я хотел бы, по крайней мере, иметь возможность войти в систему с локальным (не Kerberos) пользователем, чтобы исправить проблему.
Есть ли какой-то оператор AND, в котором я могу сказать, что вход в систему через kerberos + ldap достаточен только в случае успешной аутентификации kerberos и при монтировании ecryptfs?
Я не знаю ни одного оператора AND для PAM, но вы можете добиться того же эффекта с помощью управляющих операторов. Согласно моему комментарию, это довольно хакерски, но должно быть сделано.
В вашем скрипте проверки верните определенный код ошибки PAM (возможно, PAM_SYSTEM_ERR
), затем используйте управляющие операторы в вашем файле common-auth
, например:
auth required pam_group.so use_first_pass
auth [success=ok default=1] pam_exec.so /etc/security/check_ecryptfs
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 try_first_pass
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
Управляющие операторы для модуля pam_exec должен заставить PAM перейти к следующему модулю (pam_krb5) в случае успеха и перейти к pam_unix, если pam_exe возвращает любой другой код возврата. Вы должны будете убедиться, что ваш модуль действительно возвращает код успеха. См. источник .
Дополнительная ссылка: