Quello che vorrei ottenere è un programma interattivo che viene eseguito prima o dopo aver chiesto all'utente la password, ma non gestirà l'accesso al computer a meno che non sia uscito con successo. Per renderlo un po 'più comprensibile, ecco un esempio:
Vorrei ottenere l'accesso al mio computer, scrivendo prima il mio nome utente, quindi la mia password e successivamente rispondendo correttamente a una semplice domanda matematica generata casualmente.
Perché funzioni, utilizzo il seguente file di autenticazione di 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
Il problema è che il programma chiamato math non è in grado di gestire gli input dell'utente, in quanto legge automaticamente un EOF da PAM, il che lo rende sostanzialmente inutile. Ho anche provato la seguente variante della linea discutibile nel qual caso legge nella password, che non è anche quello che voglio:
auth optional pam_exec.so stdout expose_authtok /home/math