El conmutador de servicio de nombres ( NSS ) es una interfaz de glibc que conecta una computadora con una variedad de fuentes de bases de datos de configuración comunes y mecanismos de resolución de nombres. [1] Estas fuentes incluyen archivos del sistema operativo local (como /etc/passwd , /etc/group y /etc/hosts ), el sistema de nombres de dominio (DNS), el servicio de información de red (NIS, NIS+) y LDAP .
Un administrador de sistema generalmente configura los servicios de nombres del sistema operativo mediante el archivo /etc/nsswitch.conf . Este archivo enumera bases de datos (como passwd , shadow y group ) y una o más fuentes para obtener esa información. Algunos ejemplos de fuentes son files para archivos locales, ldap para el Protocolo ligero de acceso a directorios , nis para el Servicio de información de red , nisplus para NIS+ , dns para el Sistema de nombres de dominio (DNS) y wins para el Servicio de nombres de Internet de Windows .
El archivo nsswitch.conf tiene entradas de línea para cada servicio que consisten en un nombre de base de datos en el primer campo, terminado por dos puntos, y una lista de posibles bases de datos de origen en el segundo campo.
Un archivo típico podría verse así:
passwd: archivos ldapsombra: archivosgrupo: archivos ldaphosts: archivos dns niséteres: archivos nismáscaras de red: archivos nisredes: archivos nisprotocolos: archivos nisrpc: archivos nisservicios: archivos nismontaje automático: archivosalias: archivos
El orden de las bases de datos de origen determina el orden en que el NSS intentará buscar esas fuentes para resolver consultas para el servicio especificado. Se puede especificar una lista de criterios entre corchetes después de cada nombre de fuente para determinar las condiciones en las que el NSS procederá a consultar la siguiente fuente en función de la respuesta de la fuente anterior.
Los sistemas anteriores de tipo Unix accedían solo a archivos locales o tenían reglas codificadas para acceder a archivos o bases de datos almacenadas en red. Ultrix fue una notable excepción con su funcionalidad casi idéntica del archivo de configuración NSS en /etc/svc.conf .
Sun Microsystems desarrolló por primera vez el NSS para su sistema operativo Solaris .
La compatibilidad de Solaris con SVR4, que Sun Microsystems y AT&T Unix System Laboratories desarrollaron conjuntamente mediante la fusión de UNIX System V , BSD y Xenix , requería que terceros pudieran conectar implementaciones de servicios de nombres para la capa de transporte de su elección ( OSI o IP ) sin tener que reescribir aplicaciones RPC independientes del transporte ( TI-RPC ) compatibles con SVR4 ni reconstruir el sistema operativo. Sun introdujo el servicio de directorio NIS+ en Solaris para reemplazar a NIS , que requería la coexistencia de los dos servicios de directorio dentro de una empresa para facilitar la migración.
Los ingenieros de Sun, Thomas Maslen y Sanjay Dani, fueron los primeros en diseñar e implementar el Name Service Switch. Cumplieron con los requisitos de Solaris con la especificación del archivo nsswitch.conf y la opción de implementación de cargar módulos de acceso a bases de datos como bibliotecas cargadas dinámicamente , algo que Sun también fue el primero en introducir.
El diseño original de los ingenieros de Sun del archivo de configuración y la carga en tiempo de ejecución de las bibliotecas de back-end del servicio de nombres ha resistido la prueba del tiempo a medida que los sistemas operativos han evolucionado y se han introducido nuevos servicios de nombres. A lo largo de los años, los programadores han adaptado el archivo de configuración NSS con implementaciones casi idénticas a muchos otros sistemas operativos, incluidos FreeBSD , NetBSD , Linux , HP-UX , IRIX y AIX [ cita requerida ] . Más de dos décadas después de que se inventara el NSS, GNU libc lo implementa de forma casi idéntica.