Não estou ciente de nenhum operador AND para o PAM, mas você pode obter o mesmo efeito com instruções de controle. Segundo o meu comentário, isso é muito hacky, mas deve fazer o trabalho.
Em seu script de verificação, retorne um código de erro específico do PAM (provavelmente PAM_SYSTEM_ERR
) e, em seguida, use as instruções de controle em seu arquivo common-auth
da seguinte forma:
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
As instruções de controle para o módulo pam_exec devem fazer com que o PAM vá para o próximo módulo (pam_krb5) em caso de sucesso, e pule para pam_unix se pam_exe retornar qualquer outro código de retorno. Você precisará ter certeza de que seu módulo realmente retorna o código de sucesso. Veja a fonte .
Referência adicional:
- página man pam.d (particularmente a seção sobre instruções de controle)
- Guia do Escritor do Módulo PAM