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
sumber
Jawaban:
Tidak ada stdout / stdin di sana pada tahap PAM. Anda perlu menelepon
pam_conv(3)
viapam_get_item(3)
untuk melakukan i / o.Contoh yang bagus di ben.akrin.com termasuk contoh sumber C yang relevan.
sumber