Não estou familiarizado com a implementação de pam_exec.so , mas fiz um pequeno PAM e acho complicado qualquer módulo lidar com sessões interativas com um script de terceiros devido à maneira como a conversa do PAM funciona ( pam_conv_* funções) e a necessidade de saber quando o script de terceiro estaria lendo stdin ou não (já que o script não é simplesmente exec pelo módulo em primeiro plano).
Dependendo da quantidade de esforço que alguém está disposto a ir, construir um PAM não é complicado e você tem exemplos fáceis de ler em python ou golang
Outra opção (talvez mais rápida) é usar a opção stdin em pam_exec.so .
Segurança à parte, e dependendo do seu caso de uso, isso pode ser suficiente, pois envia a senha para o script stdin.
Se a entrada de script concatenada com senha for uma opção para você (como algumas implementações 2FA nas quais você insere senha + OTP no campo de senha):
- Adicione a opção
stdinà sua linhapam_exec.so - No seu script, divida a senha da sua segunda entrada
- Manipule a autenticação de senha em si (como
pam_unixnão conseguirá fazer isso com a entrada extra) - Faça uso de sua entrada extra
