Cách sử dụng cùng một thư viện nhiều lần trong Chuyển đổi dịch vụ tên (NSS)


8

Có giải pháp chung nào để sử dụng một thư viện NSS hai lần (hoặc nhiều hơn) không?

Trong trường hợp của tôi, tôi có hai máy chủ LDAP, một cục bộ trên máy và một điều khiển từ xa. Tôi cần làm cho NSS hoạt động với cả hai (nó sử dụng điều khiển từ xa nếu cục bộ không có mục bắt buộc).

Hiện tại nó đã được giải quyết để thư viện đơn ( PADL / nss_ldap ) được xây dựng hai lần. Trong cả hai trường hợp trước khi xây dựng sedđược sử dụng để thay đổi tất cả các nss_ldaplần xuất hiện trong nguồn thành một thứ khác. Đối với mỗi trường hợp, một văn bản khác nhau được sử dụng (như nss_ldap_1nss_ldap_2). Kết quả xây dựng được đổi tên cho phù hợp. Cả hai nhị phân được lưu trữ trên hệ thống đích và được đề cập đến /etc/nsswitch.conf.

Ngoài ra cả hai thư viện này đều sử dụng các tệp cấu hình khác nhau /etc/(nếu không nó sẽ không có ý nghĩa gì!). Tuy nhiên, điều này được thực hiện dễ dàng bằng cách chỉ thay đổi đối số trong configuretập lệnh của thư viện chạy trước khi xây dựng.

Nhưng nó không "cảm thấy đúng". Có cách tiếp cận nào khác không?

Những gì tôi có thể tưởng tượng là chính thư viện NSS có thể hỗ trợ nhiều cấu hình để nó hoạt động như hai "trường hợp đơn lẻ". Nhưng điều này khó đạt được nếu bạn không phải là tác giả của thư viện. Ngoài ra, nó yêu cầu gọi thư viện tiếp theo cho cả hai cấu hình trong khi người ta có thể muốn có một số thư viện khác ở giữa.

Một cách tiếp cận khác là viết một trình chuyển tiếp đơn giản chỉ cần gọi một số thư viện khác với cấu hình khác. Nhưng điều này một lần nữa yêu cầu thư viện khác bằng cách nào đó có thể cấu hình lại được (nếu nó chỉ sử dụng một số tệp cấu hình cố định trong /etctrình chuyển tiếp sẽ hoạt động giống như phiên bản đầu tiên). Và nó cũng chỉ hoạt động một lần - để có một thư viện được sử dụng ba lần trở lên, cùng một vấn đề trở lại với chính giao nhận.


Ái chà, thật ngạc nhiên khi làm việc mà họ không cố đọc từ cùng một tệp cấu hình? Hoặc bạn đã thay đổi tên tập tin cấu hình là tốt?
derobert

1
Làm thế nào về việc sử dụng sss?
Stéphane Chazelas

@ StéphaneChazelas Tôi nghĩ rằng sssd dự định hoạt động với một hệ thống LDAP có thẩm quyền, trong đó tất cả các máy chủ LDAP mà nó nói có cùng dữ liệu. OP dường như muốn nhiều máy chủ có dữ liệu khác nhau và một số tra cứu đi ngược lại server1 và các tra cứu khác so với server2.
derobert

@derobert, không, sssd nên làm việc với một số nhà cung cấp độc lập.
Stéphane Chazelas

2
Mặt khác, bạn có thể thấy rằng nó giải quyết một vài thứ khác như bộ đệm thông tin xác thực phù hợp và linh hoạt hơn trong cấu hình.
Stéphane Chazelas

Câu trả lời:


4

Thật không may, bạn không thể làm điều này với việc triển khai NSS của libc GNU. Bạn nhận thấy vấn đề cơ bản, chỉ cần để tôi trình bày nó từ một góc độ khác: nsswitch.confcú pháp không cho phép cung cấp bất kỳ thông tin bổ sung nào cho các mô-đun dịch vụ NSS, do đó chúng không thể hành xử khác nhau đối với các yêu cầu lặp đi lặp lại. Vì vậy, nó không được hỗ trợ từ phía libc cũng như từ phía mô-đun. Hơn nữa, glibc đưa ra quan điểm giữ các mô-đun dịch vụ trực tiếp các đối tượng chia sẻ có thể liên kết với nhau, loại trừ mọi mánh khóe liên kết.

Thay vào đó, những gì bạn có thể làm là tạo một thư mục meta từ hai thư mục LDAP của bạn và sử dụng thư mục đó trong cấu hình NSS của bạn. OpenLDAP hỗ trợ độc đáo này, xem slapd-meta(5)trang hướng dẫn hoặc phần giới thiệu hợp nhất này chẳng hạn. Tất nhiên bạn không cần một slapdví dụ mới cho điều này nếu bạn có thể cấu hình một trong hai.

(Và thay vì nss-ldapsử dụng nss-ldapdnếu bạn có thể.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.