Name Service Switch (NSS)
Le commutateur de service de noms (Name Service Switch ou NSS) est une fonction dans les systèmes d'exploitation de type Unix qui fournit une variété de sources pour les bases de données de configuration courantes et les mécanismes de résolution de noms. Ces bases de données sources incluent des fichiers de système d'exploitation locaux, par exemple, /etc/passwd, /etc/group et /etc/hosts, le système de noms de domaine (DNS), le service d'information réseau (NIS), LDAP et autres.
NSS a pour objet de normaliser la résolution de noms au sein d’un système. NSS permet de résoudre un nom en une autre information associée, comme par exemple un nom d’utilisateur et son uid, un nom de groupe et son gid, ou encore un nom d’hôte et son adresse IP.
Sun Microsystems a d'abord développé NSS pour son système d'exploitation Solaris, mais par la suite les programmeurs l'ont porté sur de nombreux autres systèmes d'exploitation, notamment FreeBSD, NetBSD, GNU/Linux, HP-UX, IRIX et AIX.
Dans un fonctionnement NSS, un fichier /etc/nsswitch.conf détermine pour différents types de résolutions la source d’information à privilégier, et les applications ayant besoin de ces informations vont consulter les sources dans l’ordre imposé par le fichier nsswitch.conf. La résolution s’appuie alors sur des bibliothèques NSS (libnss_X.so où X représente le service de résolution employé), et les applications n’ont pas besoin de connaître directement la méthode de résolution employée.
Format du fichier nsswitch.conf
résolution: source_1 source_n
- résolution : Le type de résolution à effectuer.
- source_1 : Obligatoire. La première source de résolution à employer.
- source_n : Facultatif. La ou les autres sources de résolution possibles à utiliser après la première.
Un administrateur système configure généralement les services de noms du système d'exploitation à l'aide du fichier /etc/nsswitch.conf. Celui-ci répertorie les bases de données (telles que passwd, shadow et group) et une ou plusieurs sources pour obtenir ces informations. Les exemples de sources sont files pour les fichiers locaux, ldap pour le Lightweight Directory Access Protocol, nis pour le Network Information Service, nisplus pour NIS+, wins pour Windows Internet Name Service.
Exemple de fichier nsswitch.conf
devinfo@ubuntu:~$ cat /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: files systemd group: files systemd shadow: files gshadow: files hosts: files mdns4_minimal [NOTFOUND=return] dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
L'ordre des services répertoriés détermine dans quel ordre NSS tentera d'utiliser ces services pour résoudre les requêtes sur la base de données spécifiée.
La fonction de commutation de service est implémentée dans la bibliothèque C, de sorte que les appels à des fonctions telles que getent se résolvent au module NSS approprié. Cela garantit que les applications existantes qui utilisent les routines NSS ne nécessitent aucune modification pour fonctionner avec NSS.