Existe-t-il une solution générique pour utiliser une seule bibliothèque NSS deux fois (ou plus)?
Dans mon cas, j'ai deux serveurs LDAP, un local sur la machine elle-même et un distant. J'ai besoin de faire fonctionner NSS avec les deux (il utilise celui distant si local n'a pas les entrées requises).
Actuellement, il a été résolu afin que la bibliothèque unique ( PADL / nss_ldap ) soit construite deux fois. Dans les deux cas, avant que la construction sed
soit utilisée pour changer toutes les nss_ldap
occurrences des sources en autre chose. Pour chaque cas, un texte différent est utilisé (comme nss_ldap_1
et nss_ldap_2
). Le résultat de la construction est renommé en conséquence. Les deux fichiers binaires sont stockés sur le système cible et mentionnés dans /etc/nsswitch.conf
.
Ces deux bibliothèques utilisent également des fichiers de configuration différents dans /etc/
(sinon cela n'aurait aucun sens!). Cependant, cela se fait facilement en changeant simplement l'argument dans le configure
script de la bibliothèque exécutée avant la construction.
Mais cela ne "se sent pas bien". Y a-t-il une autre approche?
Ce que je pourrais imaginer, c'est que la bibliothèque NSS elle-même pourrait prendre en charge plusieurs configurations afin qu'elle fonctionne comme deux "instances uniques". Mais cela est difficile à réaliser si vous n'êtes pas l'auteur de la bibliothèque. De plus, cela nécessite un appel ultérieur de la bibliothèque pour les deux configurations, alors que l'on pourrait préférer avoir une autre bibliothèque entre les deux.
Une autre approche serait d'écrire un simple redirecteur qui appelle simplement une autre bibliothèque avec une configuration différente. Mais cela nécessite à nouveau que d'autres bibliothèques soient en quelque sorte reconfigurables (si elles n'utilisent que des fichiers de configuration fixes dans /etc
le redirecteur, cela fonctionnera comme la première version). Et cela ne fonctionne qu'une seule fois - pour qu'une bibliothèque soit utilisée trois fois ou plus, le même problème revient maintenant avec le transitaire lui-même.
sss
?Réponses:
Malheureusement, vous ne pouvez pas le faire avec l'implémentation NSS de GNU libc. Vous avez remarqué le problème fondamental, permettez-moi de le présenter sous un angle différent: la
nsswitch.conf
syntaxe ne permet pas de fournir des informations supplémentaires aux modules de service NSS, ils ne peuvent donc pas se comporter différemment lors d'appels répétés de toute façon. Il n'est donc pas pris en charge du côté libc ni du côté module. De plus, glibc effectue un moment de maintenir les modules de service directement des objets partagés réticulable, ce qui exclut toute ruse de liaison.Ce que vous pouvez faire à la place est de créer un méta-répertoire à partir de vos deux répertoires LDAP et de l'utiliser dans votre configuration NSS. OpenLDAP le supporte bien, voir la
slapd-meta(5)
page de manuel ou cette introduction de fusion par exemple. Bien sûr, vous n'avez pas besoin d'une nouvelleslapd
instance pour cela si vous pouvez configurer l'un des deux.(Et au lieu d'
nss-ldap
utilisernss-ldapd
si vous le pouvez.)la source