Bagaimana cara menambahkan langkah tambahan untuk login?

8

Apa yang ingin saya capai adalah program interaktif yang berjalan baik sebelum atau setelah meminta kata sandi pengguna, tetapi tidak akan menangani akses ke komputer kecuali keluar dengan sukses. Untuk membuatnya lebih dimengerti, berikut ini sebuah contoh:

Saya ingin mendapatkan akses ke komputer saya, dengan terlebih dahulu menulis nama pengguna saya, lalu kata sandi saya, dan setelah itu menjawab pertanyaan matematika sederhana yang dihasilkan secara acak dengan benar.

Agar ini berfungsi, saya menggunakan file auth sistem berikut:

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

Masalahnya adalah, bahwa program bernama matematika tidak dapat menangani input dari pengguna, karena secara otomatis membaca EOF dari PAM, yang pada dasarnya menjadikannya tidak berguna. Saya juga mencoba varian berikut dari baris yang dipertanyakan yang dalam kasus ini terbaca dalam kata sandi, yang juga bukan yang saya inginkan:

auth      optional  pam_exec.so stdout expose_authtok /home/math
FloriOn
sumber
2
Kedengarannya seperti Anda ingin kode modul PAM Anda sendiri, lebih detail dalam manual PAM. linux-pam.org/Linux-PAM-html/Linux-PAM_MWG.html
Drav Sloan

Jawaban:

7

Tidak ada stdout / stdin di sana pada tahap PAM. Anda perlu menelepon pam_conv(3)via pam_get_item(3)untuk melakukan i / o.

Contoh yang bagus di ben.akrin.com termasuk contoh sumber C yang relevan.

steve
sumber