& ldquo; Оператор AND & rdquo; в PAM

Мне нужно запретить пользователям проходить аутентификацию через 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?

2
задан 7 April 2012 в 01:02

1 ответ

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

Дополнительная ссылка:

0
ответ дан 7 April 2012 в 01:02

Другие вопросы по тегам:

Похожие вопросы: