PAM - bendera kontrol yang diperlukan dan cukup


14

Saya sedang mempelajari PAM, dan saya agak tidak mengerti tentang arti beberapa kombinasi flag kontrol. Dari dokumentasi Red Hat kami memiliki:


  • kegagalan yang diperlukan dari PAM seperti itu pada akhirnya akan mengarah pada kegagalan pengembalian PAM-API tetapi hanya setelah modul yang ditumpuk yang tersisa (untuk layanan dan jenis ini) telah dipanggil

  • diperlukan
    seperti yang diperlukan, namun, dalam hal modul tersebut mengembalikan kegagalan, kontrol langsung dikembalikan ke aplikasi.


  • Keberhasilan yang cukup dari modul tersebut cukup untuk memenuhi persyaratan otentikasi dari tumpukan modul (jika modul yang diperlukan sebelumnya gagal, keberhasilan modul ini diabaikan). Kegagalan modul ini tidak dianggap fatal untuk memuaskan aplikasi yang jenis ini berhasil. Jika modul berhasil kerangka kerja PAM mengembalikan kesuksesan ke aplikasi segera tanpa mencoba modul lain.

Jadi, dalam pemahaman saya, jika modul requisitegagal, seluruh tumpukan modul tidak akan diuraikan, dan kontrol akan segera kembali ke aplikasi. Jika modul sufficientberhasil, tumpukan modul lainnya tidak akan diuraikan dan kontrol akan segera kembali ke aplikasi. Jika modul requiredgagal, seluruh tumpukan akan diuraikan.

Sekarang, saya tidak bisa mengerti apa yang akan menjadi perilaku ketika modul tertentu requiredgagal dan modul lain sufficientberhasil.

Jawaban:


11

PAM melanjutkan melalui item pada tumpukan secara berurutan. Itu hanya menyimpan ingatan tentang keadaan apa itu (sukses atau ditolak, dengan kesuksesan berarti sukses sejauh ini), bukan bagaimana ia mencapai keadaan itu.

Jika item yang ditandai sufficientberhasil, pustaka PAM berhenti memproses tumpukan itu. Ini terjadi apakah ada requireditem sebelumnya atau tidak. Pada titik ini, PAM mengembalikan status saat ini: berhasil jika tidak ada requireditem sebelumnya gagal, jika tidak ditolak.

Demikian pula, jika item yang ditandai requisitegagal, pustaka PAM berhenti memproses dan mengembalikan kegagalan. Pada saat itu, tidak relevan apakah requireditem sebelumnya gagal.

Dengan kata lain, requiredtidak perlu menyebabkan seluruh tumpukan diproses. Itu hanya berarti terus berjalan.


Tetapi jika ada requireditem yang gagal, mengapa PAMharus terus melalui tumpukan? apakah akhirnya akan gagal juga?
Mohammed Noureldin

1
@MohammedNoureldin Bahkan jika upaya login gagal, beberapa hal harus dilakukan, seperti logging, menambahkan batas waktu terhadap upaya brute-force, dll. Juga biasanya sistem tidak mengungkapkan alasan pasti kegagalan tersebut, misalnya jika mencari nama pengguna gagal maka pengguna masih dimintai kata sandi.
Gilles 'SANGAT berhenti menjadi jahat'

Urutan adalah urutan di mana mereka terdaftar dalam konfigurasi?
OrangeDog

@OrangeDog Ya. Modul yang tercantum pada baris pertama dieksekusi, kemudian baris kedua dieksekusi (atau dilewati tergantung pada hasil dari baris pertama), dll.
Gilles 'SO-stop being evil'

1

Menurut pendapat saya, requiredbendera kontrol harus selalu berhasil agar modul berhasil.

Sebuah sufficientmodul ditandai diabaikan jika gagal. Jika berhasil dan tidak ada requiredmodul yang ditandai di atas gagal maka, tidak ada modul lain dari jenis yang sama harus diperiksa dan modul dianggap berhasil. Jadi pada dasarnya, requiredbendera memiliki prioritas lebih tinggi daripada sufficientbendera tetapi yang terakhir memiliki kemampuan untuk berhenti memeriksa sisanya jika yang sebelumnya requiredberhasil.

Contoh:

1 auth       required     /lib/security/pam_nologin.so
2 auth       required     /lib/security/pam_securetty.so
3 auth       required     /lib/security/pam_env.so
4 auth       sufficient   /lib/security/pam_rhosts_auth.so
5 auth       required     /lib/security/pam_stack.so service=system-auth

Jika baris 1, 2, 3 dan 4 berhasil maka, baris 5 dapat dilewati dan modul authberhasil. Jika jalur 4 tidak berhasil maka diabaikan dan jalur 5 dicentang. Jika salah satu baris 1, 2, 3 telah gagal maka, baris 4 tidak diperhitungkan.


1
Saya pikir pertanyaannya adalah apa yang terjadi jika 1 gagal dan 2-4 berhasil. Apakah 5 bisa dijalankan? Jika saya berhasil, 5 tidak akan dijalankan. Atau dengan kata lain, apakah "berhenti setelah cukup berhasil" berlaku jika modul yang diminta sebelumnya gagal?
cjm

Tidak, modul auth akan gagal dengan kombinasi seperti itu.
dsmsk80

Pertanyaannya bukan apakah otorisasi akan gagal. Itu akan. Pertanyaannya adalah apakah modul 5 akan berjalan sebelum kegagalan dilaporkan ke aplikasi.
cjm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.