NSS (Name Service Switch)
NSS (en anglais Name Service Switch) : mécanisme de la bibliothèque C qui répond aux questions « ce compte existe-t-il, quel est son UID ? », « quels sont les membres de ce groupe ? », « quelle adresse porte ce nom d'hôte ? », en consultant des sources dans l'ordre fixé par /etc/nsswitch.conf. Chaque ligne nomme une base et ses sources, par exemple passwd: files systemd sss ou hosts: files dns.
Chaque source est une bibliothèque libnss_<source>.so.2 chargée à la demande : files lit /etc/passwd ou /etc/hosts, systemd fournit les comptes dynamiques, sss interroge SSSD et donc un annuaire, dns le résolveur, resolve systemd-resolved directement, myhostname résout toujours le nom de la machine. Des actions conditionnelles comme [NOTFOUND=return] arrêtent la recherche. getent passwd camille interroge comme le fait le système, quand un grep dans /etc/passwd ne voit que le fichier local ; getent -s sss passwd camille dit d'où vient un compte.
NSS dit qui existe ; c'est PAM qui décide qui prouve son identité et peut entrer. Un compte peut exister pour NSS et être refusé par PAM. Limite à connaître : un binaire lié statiquement (certains outils en Go, des binaires musl) ne peut pas charger ces bibliothèques et ne voit que les fichiers locaux, d'où un UID numérique là où ls -l affiche un nom.
Dans les cours
- Linux : administration système, leçon 13 : Authentification : PAM, NSS et annuaires
- Linux : administration système, leçon 7 : Configurer le réseau d'un serveur
- Linux : premiers pas, leçon 8 : Utilisateurs, groupes et sudo