Comment ajouter des étapes supplémentaires pour se connecter?

8

Ce que j'aimerais réaliser, c'est un programme interactif qui s'exécute avant ou après avoir demandé le mot de passe à l'utilisateur, mais ne gérera pas l'accès à l'ordinateur à moins qu'il ne se termine avec succès. Pour le rendre un peu plus compréhensible, voici un exemple:

Je voudrais avoir accès à mon ordinateur, en écrivant d'abord mon nom d'utilisateur, puis mon mot de passe, puis en répondant correctement à une simple question mathématique générée aléatoirement.

Pour que cela fonctionne, j'utilise le fichier d'authentification système suivant:

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

Le problème est que le programme nommé math ne peut pas gérer les entrées de l'utilisateur, car il lit automatiquement un EOF depuis PAM, ce qui le rend essentiellement inutile. J'ai également essayé la variante suivante de la ligne douteuse, auquel cas elle lit dans le mot de passe, ce qui n'est pas non plus ce que je veux:

auth      optional  pam_exec.so stdout expose_authtok /home/math
FloriOn
la source
2
On dirait que vous voudrez coder votre propre module PAM, plus de détails dans le manuel PAM. linux-pam.org/Linux-PAM-html/Linux-PAM_MWG.html
Drav Sloan

Réponses: