O que eu gostaria de obter é um programa interativo que é executado antes ou depois de solicitar a senha do usuário, mas não lida com o acesso ao computador, a menos que saia com êxito. Para torná-lo um pouco mais compreensível, aqui está um exemplo:
Gostaria de obter acesso ao meu computador, primeiro escrevendo meu nome de usuário, depois minha senha e, depois disso, respondendo corretamente a uma simples pergunta matemática gerada aleatoriamente.
Para que isso funcione, eu uso o seguinte arquivo de autenticação do sistema:
auth required pam_unix.so try_first_pass nullok nodelay
auth optional pam_faildelay.so delay=600000
auth optional pam_exec.so stdout /home/math
auth optional pam_permit.so
auth required pam_env.so
O problema é que o programa chamado math não pode manipular as entradas do usuário, pois ele lê automaticamente um EOF do PAM, o que essencialmente o torna inútil. Eu também tentei a seguinte variante da linha questionável, caso em que lê a senha, que também não é o que eu quero:
auth optional pam_exec.so stdout expose_authtok /home/math