Apakah ada solusi umum untuk menggunakan perpustakaan NSS tunggal dua (atau lebih) kali?
Dalam kasus saya, saya memiliki dua server LDAP, satu lokal pada mesin itu sendiri dan satu remote. Saya perlu membuat NSS berfungsi dengan keduanya (menggunakan yang jauh jika lokal tidak memiliki entri yang diperlukan).
Saat ini telah diselesaikan sehingga perpustakaan tunggal ( PADL / nss_ldap ) dibangun dua kali. Dalam kedua kasus sebelum bangunan sed
digunakan untuk mengubah semua nss_ldap
kejadian dalam sumber ke sesuatu yang lain. Untuk setiap kasus digunakan teks yang berbeda (seperti nss_ldap_1
dan nss_ldap_2
). Hasil build diubah namanya sesuai. Kedua binari disimpan pada sistem target dan disebut dalam /etc/nsswitch.conf
.
Juga kedua pustaka tersebut menggunakan file konfigurasi yang berbeda /etc/
(jika tidak, tidak masuk akal!). Namun ini dilakukan dengan mudah dengan hanya mengubah argumen dalam configure
skrip pustaka yang dijalankan sebelum membangun.
Tapi itu tidak "terasa benar". Apakah ada pendekatan lain?
Apa yang dapat saya bayangkan adalah bahwa pustaka NSS sendiri dapat mendukung banyak konfigurasi sehingga dapat berfungsi sebagai dua "instance tunggal". Tetapi ini sulit dicapai jika Anda bukan penulis perpustakaan. Juga memerlukan permintaan perpustakaan berikutnya untuk kedua konfigurasi sementara satu mungkin lebih memilih untuk memiliki beberapa perpustakaan lain di antaranya.
Pendekatan lain adalah dengan menulis forwarder sederhana yang hanya memanggil beberapa perpustakaan lain dengan konfigurasi yang berbeda. Tapi ini lagi mengharuskan perpustakaan lain entah bagaimana dapat dikonfigurasi ulang (jika hanya menggunakan beberapa file konfigurasi tetap di /etc
forwarder akan berfungsi seperti versi pertama). Dan itu juga berfungsi hanya sekali - memiliki perpustakaan yang digunakan tiga kali atau lebih masalah yang sama kembali sekarang dengan forwarder itu sendiri.
sss
?Jawaban:
Sayangnya, Anda tidak dapat melakukan ini dengan implementasi NSS dari GNU libc. Anda memperhatikan masalah mendasar, izinkan saya menyajikannya dari sudut yang berbeda:
nsswitch.conf
sintaksis tidak memungkinkan untuk memberikan info tambahan ke modul layanan NSS, sehingga mereka tidak bisa berperilaku berbeda pada pemanggilan berulang. Jadi itu tidak didukung dari sisi libc atau dari sisi modul. Selain itu, glibc membuat titik layanan menjaga modul layanan yang langsung ditautkan objek bersama, yang mengecualikan segala tipu penautan.Yang bisa Anda lakukan adalah membuat direktori meta dari dua direktori LDAP Anda dan menggunakannya di konfigurasi NSS Anda. OpenLDAP mendukung ini dengan baik, lihat
slapd-meta(5)
halaman manual atau intro gabungan ini misalnya. Tentu saja Anda tidak perluslapd
contoh baru untuk ini jika Anda dapat mengkonfigurasi salah satu dari keduanya.(Dan bukannya
nss-ldap
digunakannss-ldapd
jika Anda bisa.)sumber