Wie füge ich zusätzliche Schritte zum Anmelden hinzu?

8

Was ich erreichen möchte, ist ein interaktives Programm, das entweder vor oder nach der Frage des Benutzers nach dem Kennwort ausgeführt wird, aber den Zugriff auf den Computer nur dann handhabt, wenn er erfolgreich beendet wurde. Um es etwas verständlicher zu machen, hier ein Beispiel:

Ich möchte Zugriff auf meinen Computer erhalten, indem ich zuerst meinen Benutzernamen und dann mein Passwort schreibe und danach eine einfache zufällig generierte mathematische Frage richtig beantworte.

Damit dies funktioniert, verwende ich die folgende Systemauthentifizierungsdatei:

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

Das Problem ist, dass das Programm mit dem Namen math keine Eingaben des Benutzers verarbeiten kann, da es automatisch einen EOF aus PAM liest, was ihn im Wesentlichen unbrauchbar macht. Ich habe auch die folgende Variante der fraglichen Zeile ausprobiert. In diesem Fall liest sie das Passwort ein, was auch nicht das ist, was ich will:

auth      optional  pam_exec.so stdout expose_authtok /home/math
FloriOn
quelle
2
Klingt so, als ob Sie Ihr eigenes PAM-Modul codieren möchten. Weitere Informationen finden Sie im PAM-Handbuch. linux-pam.org/Linux-PAM-html/Linux-PAM_MWG.html
Drav Sloan

Antworten:

7

Kein stdout / stdin dort in der PAM-Phase. Sie müssen Anruf pam_conv(3)über pam_get_item(3)i / o auszuführen.

Gutes Beispiel bei ben.akrin.com einschließlich des entsprechenden C-Quellenbeispiels.

Steve
quelle