Descripción general de Nsswitch.Conf

La introducción de los Servicios de información de red (NIS) y el Sistema de nombres de dominio (DNS) ha hecho que sea más complicado buscar los detalles de la información del usuario y del sistema. Ahora, no es tan simple simplemente mirar dentro del archivo local.

Antes, para verificar la información del usuario, debemos consultar /etc/passwd y debemos buscar en /etc/hosts la información de la dirección del sistema. Ahora, hay varias formas de encontrar este tipo de información. Puede configurar qué servicios se utilizarán para buscar cosas como nombres de host, archivos de contraseña y archivos de grupo utilizando el archivo /etc/nsswitch.conf .

Con el archivo /etc/nsswitch.conf (configuración del cambio de servicio de nombres), podemos especificar las formas y su orden para usarlos cuando buscamos un tipo específico de información. Podemos indicar la acción que realiza el sistema en función de si un método es exitoso o no.

¿De qué hablaremos?

En este artículo, cubriremos una descripción general del archivo nsswitch.conf en el sistema operativo Linux. Comencemos ahora.

Formato de archivo Nsswitch.Conf

En el archivo nsswitch.conf, cada línea define cómo buscar una información. El formato de una línea en nsswitch.conf se ve así:

info: método [ [ acción ] ] [ método [ [ acción ] ] … ]

Donde «info» se refiere a la información que se describe en la línea, «método» se refiere a la técnica que se utiliza para obtener esa información y «acción» se refiere a la respuesta al estado de retorno del método anterior. La acción está rodeada por corchetes.

Dentro del archivo Nsswitch.Conf

Veamos ahora este archivo. El archivo se ve así:

# /etc/nsswitch.conf
#
# Nombre del archivo de configuración del conmutador de servicio.
#

passwd: archivos db
sombra: archivos
grupo: archivos db

hosts: archivos dns
redes: archivos

éteres: archivos db
protocolos: archivos db
rpc: archivos db
servicios: archivos db

Como probablemente adivinará al mirar la tabla provista, la base de datos se encuentra en la primera columna. El resto de esta línea indica cómo se realiza la búsqueda. Además, tenga en cuenta que debe mostrar la forma en que funciona para cada base de datos individualmente. Esto no se puede lograr usando el método convencional de una implementación monolítica. La definición de configuración de cada base de datos puede tener dos campos distintos: la especificación del servicio, como archivos, db o nis, y la respuesta para buscar los resultados, como [NOTFOUND=return].

Opciones disponibles con el archivo Nsswitch.Conf

Las opciones de este archivo deben residir en líneas diferentes. Las siguientes opciones están disponibles:

  1. dns: en este caso, se utiliza el servicio DNS para resolver la dirección. Esto es bueno para resolver las direcciones de host pero no para la resolución de direcciones de red.
  2. files: Utiliza los archivos clásicos /etc/hosts y /etc/network. Busca un archivo local para el nombre de host o red y su respectiva dirección.
  3. nis o nis+: para resolver el host o la dirección de red, utiliza el Sistema de información de red (NIS).

El orden de las bases de datos de origen controla el orden en que el NSS intenta buscar esas fuentes para resolver las consultas del servicio de destino.

Acciones en la configuración de NSS

El siguiente elemento de especificación permite al usuario un control mucho mayor sobre el comportamiento de búsqueda. Los elementos de acción se colocan entre las especificaciones del servicio y están entre corchetes. Generalmente, la declaración de acción tiene la siguiente sintaxis:

[ [ ! ] estado = acción … ]

Analicemos esta sintaxis:

  1. El parámetro de acción tiene dos acciones posibles:
    1. return: el programa que intenta la resolución de nombres recupera el control. En caso de que falle un intento de búsqueda, la resolución devuelve cero; de lo contrario, regresa con los detalles.
    2. continuar: el resolutor va al servicio subsiguiente en la lista para intentar la resolución usando este servicio.
    3. merge: Significa continuar con el proceso de búsqueda manteniendo los resultados recientes. Esta acción solo se puede utilizar cuando el estado es «éxito».
  2. El carácter (!) es opcional y básicamente significa que no. El carácter (!) es una operación de inversión que se utiliza en muchos lenguajes de programación.
  3. El parámetro de estado: el valor STATUS se compara con el resultado de la función de búsqueda que llama la especificación de servicio anterior. El valor de estado puede ser:
    1. exito : La entrada solicitada se obtiene sin dificultad. La acción predeterminada es «regresar».
    2. notfound : la búsqueda es exitosa. Sin embargo, no se encuentra el host o la red de destino. La acción predeterminada es «continuar».
    3. unavail : No se pudo encontrar el servicio solicitado. Podría implicar que el archivo de hosts o redes no es legible para el servicio de archivos. También puede significar que un servidor de nombres o un servidor NIS no respondió a los servicios dns o nis. La acción predeterminada aquí es «continuar».
    4. Tryagain : este estado indica que el servicio no está disponible actualmente. Esto puede implicar que un archivo está bloqueado o que un servidor no puede aceptar más conexiones en este momento. La acción predeterminada aquí también es «continuar».

Un ejemplo básico de este mecanismo puede ser como se muestra en la siguiente ilustración. Utiliza la instrucción «Acción»:

anfitriones: dns [ ! UNAVAIL = volver ] archivos
redes: archivos

Este ejemplo utiliza un servicio DNS para la resolución de host. El resolutor devuelve los datos consultados si el estado de devolución no es «no disponible». Si el estado de devolución no está disponible, el sistema de resolución utiliza el archivo /etc/hosts local.

Nota importante : el usuario debe esforzarse por mejorar el proceso de búsqueda. Los tiempos de respuesta varían según el servicio. Una búsqueda básica de archivos en un archivo local puede ser rápida. Sin embargo, si el archivo es largo y la entrada solicitada está hacia el final, puede llevar mucho tiempo. En este escenario, puede ser preferible el servicio de base de datos, que ofrece acceso local rápido a grandes conjuntos de datos.

Conclusión

En este artículo, aprendimos sobre una descripción general del archivo nsswitch.conf en Linux. Incluso si /etc/nsswitch.conf no existe, la implementación de NSS no es absolutamente indefensa. Hay un valor predeterminado para cada base de datos admitida. Por lo tanto, incluso si un archivo está dañado o no existe, el sistema normalmente debería poder funcionar.