Pada hari-hari terakhir saya telah menyiapkan beberapa sistem Linux dengan otentikasi LDAP dan semuanya berfungsi dengan baik, tetapi masih ada sesuatu yang saya tidak bisa mengerti mengenai NSS dan PAM, juga setelah banyak penelitian.
Mengutip:
NSS memungkinkan administrator untuk menentukan daftar sumber tempat file otentikasi, nama host dan informasi lainnya akan disimpan dan dicari
dan
PAM adalah seperangkat perpustakaan yang menyediakan platform otentikasi yang dapat dikonfigurasi untuk aplikasi dan sistem operasi yang mendasarinya
Yang tidak saya mengerti adalah bagaimana PAM dan NSS bekerja dan berinteraksi bersama. Dalam buku ini arsitekturnya dijelaskan dengan cukup baik: Saya mengonfigurasi PAM untuk digunakan pam_ldap
untuk akun LDAP dan pam_unix
untuk akun lokal, kemudian saya mengkonfigurasi nsswitch.conf
untuk mengambil informasi dari file lokal dan LDAP.
Jika saya mengerti dengan benar, LDAP digunakan dua kali: pertama oleh pam_ldap
dan kemudian oleh NSS yang dipanggil dari pam_unix
. Apakah itu benar? Apakah LDAP benar-benar digunakan dua kali? Tetapi mengapa saya harus mengkonfigurasi NSS dan PAM? Penjelasan saya adalah bahwa PAM melakukan tugas yang berbeda dari NSS dan digunakan oleh program lain. Tapi, kalau begitu, seharusnya hanya menggunakan NSS atau PAM saja, seperti yang saya baca di halaman ini .
Jadi saya bereksperimen sedikit dan saya pertama kali mencoba menghapus LDAP dari nsswitch.conf
(dan otentikasi berhenti bekerja seolah-olah hanya pam_ldap tidak cukup untuk melakukan pekerjaan). Kemudian saya mengaktifkan kembali LDAP di NSS dan saya menghapusnya dari konfigurasi PAM (kali ini semuanya bekerja dengan baik, seolah-olah pam_ldap
tidak berguna dan NSS cukup untuk mengotentikasi pengguna).
Apakah ada orang yang dapat membantu saya untuk menjelaskan ini? Banyak terima kasih sebelumnya.
MEMPERBARUI
Saya baru saja mencoba sesuatu sekarang. Saya menghapus lagi semua pam_ldap
entri di semua bidang konfigurasi pam dan saya juga telah menghapus shadow: ldap
dari nsswitch.conf
. Seperti sekarang dalam semua sistem hanya ada garis: passwd: ldap files
dan group: ldap files
di nsswitch.conf
. Yah ... login dengan pengguna LDAP berfungsi dengan baik, dua baris (plus /etc/ldap.conf
) sudah cukup untuk mengkonfigurasi autentikasi LDAP.
Dari PAM pengetahuan saya di independen dari NSS, tetapi tes saya menunjukkan itu tidak. Jadi saya bertanya pada diri sendiri apakah mungkin untuk menonaktifkan NSS sepenuhnya dan hanya menggunakan PAM?
sumber
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow
Jawaban:
Membantu memecah hal-hal seperti ini di kepala Anda:
NSS - Sistem berbasis modul untuk mengendalikan bagaimana berbagai basis data OS-level dirakit dalam memori. Ini termasuk (namun tidak terbatas pada)
passwd
,group
,shadow
(ini penting untuk catatan), danhosts
. Pencarian UID menggunakanpasswd
database, dan pencarian GID menggunakangroup
database.PAM - Sistem berbasis modul untuk memungkinkan otentikasi dan akuntansi berbasis layanan. Tidak seperti NSS, Anda tidak memperluas basis data yang ada; Modul PAM dapat menggunakan logika apa pun yang mereka suka, meskipun login shell masih bergantung pada
passwd
dangroup
database NSS. (Anda selalu membutuhkan pencarian UID / GID)Perbedaan penting adalah bahwa PAM tidak melakukan apa-apa sendiri. Jika suatu aplikasi tidak terhubung dengan perpustakaan PAM dan membuat panggilan ke sana, PAM tidak akan pernah digunakan. NSS adalah inti dari sistem operasi, dan basis data cukup di mana-mana untuk operasi normal OS.
Sekarang kita memiliki itu di luar jalan, inilah bola kurva: sementara pam_ldap adalah cara populer untuk mengotentikasi terhadap LDAP, itu bukan satu - satunya cara.
shadow
menunjuk ke layanan ldap di dalam/etc/nsswitch.conf
, otentikasi apa pun yang berjalan terhadap basis data bayangan akan berhasil jika atribut untuk pemetaan bidang bayangan tersebut (khususnya bidang kata sandi terenkripsi) ada di LDAP dan akan mengizinkan masuk.pam_unix.so
berpotensi menghasilkan otentikasi terhadap LDAP, karena mengautentikasi terhadap basis data bayangan. (yang dikelola oleh NSS, dan mungkin menunjuk pada LDAP)pam_sss.so
, yang menghubungkansssd
), mungkin saja LDAP akan dirujuk.sumber
passwd
dangroup
database (NSS), yang berarti mereka harus berada di sistem lokal (/etc/passwd
+/etc/group
), atau diperoleh melaluildap
modul NSS.getent passwd
dangetent group
dengan LDAP diaktifkan untuk kedua basis data di/etc/nsswitch.conf
. Kemudian nonaktifkan LDAP dalam file itu, dan jalankan kedua perintah lagi.getent
adalah perintah untuk membuang basis data NSS.NSS ada di sana untuk menyebutkan informasi tentang layanan / pengguna (grup mana Anda berasal, di mana direktori home Anda dll). PAM menentukan apa yang harus dilakukan tentang informasi itu.
Jika Anda ingin menggunakan LDAP untuk autentikasi, Anda perlu pam_ldap. Jika Anda menggunakan sesuatu yang lain (akun lokal, Kerberos dll) maka Anda mungkin tidak.
Jadi mereka melakukan hal yang berbeda. NSS mendapatkan informasi, PAM menentukan siapa yang diizinkan melakukan apa setelah informasi itu diperoleh.
sumber
common-auth
hanya berisi pam_env, pam_unix dan pam_deny.