13.7. Escogiendo los Mapas Correctos

Habiéndose asegurado de que puede acceder al servidor NIS, debe decidir qué ficheros de configuración reemplazar o aumentar con los mapas NIS. Normalmente querrá usar mapas NIS para las funciones de búsqueda de nodo y de contraseña. La primera es especialmente útil si carece de servicio BIND. La búsqueda de contraseña permite a todos los usuarios ingresar en sus cuentas desde cualquier sistema del dominio NIS; normalmente esto implica compartir un directorio /home central entre todos los nodos vía NFS. El mapa de contraseñas se explica con detalle en la siguiente sección.

Otros mapas, como el services.byname, no proporcionan ganancias tan dramáticas, pero sí le ahorran algo de trabajo de edición. El mapa services.byname cobra valor si instala alguna aplicación de red que utilice un servicio que no esté en el fichero estándar services.

Generalmente querrá tener donde elegir cuando una función de búsqueda utilice los ficheros locales, cuando consulte a un servidor NIS y cuando utilice otros servidores como el DNS. La libc de GNU le permite configurar el orden en el que una función accede a estos servicios. Esto se controla a través del fichero /etc/nsswitch.conf, que quiere decir Conmutador de Servicio de Nombres (Name Service Switch), aunque por supuesto no está limitado al servicio de nombres. El fichero contiene una línea nombrando el servicio a usar para cada una de las funciones de búsqueda de datos soportadas por la libc de GNU.

El orden correcto de los servicios depende del tipo de datos que ofrece cada servicio. No es probable que el mapa services.byname contenga entradas diferentes a las del fichero local services; sólo contendrá entradas adicionales. Por tanto, parece razonable consultar primero a los ficheros locales y usar NIS sólo si el nombre del servicio no se encuentra. Por otra parte, la información del nombre de nodo puede cambiar frecuentemente, por lo que el servidor DNS o NIS siempre debe tener la información más precisa posible, mientras que el fichero local hosts sólo se conserva como copia de seguridad por si DNS o NIS fallan. Por tanto, para los nombres de nodo, normalmente querrá que el fichero local se lea en último lugar.

El siguiente ejemplo muestra cómo forzar a gethostbyname y gethostbyaddr que busquen en NIS y DNS antes de buscar en el fichero hosts, y cómo hacer que la función getservbyname busque en los ficheros locales antes de consultar a NIS. Estas funciones de resolución probarán con cada uno de los servicios listados en orden; si una búsqueda tiene éxito, se devuelve el resultado; si no, probarán con el siguiente servicio de la lista. La configuración para estas prioridades es:

    # pequeño ejemplo de /etc/nsswitch.conf
    #
    hosts:     nis dns files 
    services:  files nis

Lo siguiente es una lista completa de los servicios y lugares que pueden utilizarse en una entrada del fichero nsswitch.conf. Los verdaderos mapas, ficheros, servidores y objetos consultados dependen del nombre de la entrada. Lo siguiente puede aparecer a la derecha de los dos puntos:

nis

Utilizar el servidor NIS del dominio actual. La situación del servidor consultado se configura en el fichero yp.conf, como se muestra en la sección anterior. Para la entrada hosts, se consultan los mapas hosts.byname y hosts.byaddr.

nisplus o nis+

Utilizar el servidor NIS+ de este dominio. La situación del servidor se obtiene a partir del fichero /etc/nis.conf.

dns

Utilizar el servidor de nombres DNS. Este tipo de servicio sólo es útil con la entrada hosts. Los servidores de nombres consultados todavía están determinados por el fichero estándar resolv.conf.

files

Utilizar el fichero local, como el fichero /etc/hosts para la entrada hosts.

compat

Ser compatible con formatos de fichero antiguos. Esta opción puede utilizarse cuando se use NYS o la glibc 2.x para hacer búsquedas NIS o NIS+. Como estas versiones normalmente no saben interpretar las entradas antiguas de NIS en los ficheros passwd y group, la opción compat les permite funcionar con esos formatos.

db

Buscar la información en los ficheros DBM situados en el directorio /var/db. Para ese fichero se utiliza el nombre de mapa NIS correspondiente.

Actualmente, el soporte de NIS de la libc de GNU proporciona las siguientes bases de datos de nsswitch.conf: aliases, ethers.group, hosts, netgroup, network, passwd, protocols, publickey, rpc, services, y shadow. Es probable que se añandan más entradas.

El Ejemplo 13-2 muestra un ejemplo más completo que introduce otra característica del fichero nsswitch.conf. La palabra clave [NOTFOUND=return] especificada en la entrada hosts le dice al cliente NIS que devuelva si el elemento deseado no pudo encontrarse en la base de datos de NIS o DNS. Esto es, el cliente NIS continuará buscando en los ficheros locales sólo si las llamadas a los servidores NIS y DNS fallan por alguna razón. Por tanto, cuando el servidor NIS no responda se utilizarán los ficheros locales sólo en tiempo de ejecución y como copia de seguridad.

Ejemplo 13-2. Fichero nsswitch.conf de Ejemplo

    # /etc/nsswitch.conf
    #
    hosts:      nis dns [NOTFOUND=return] files
    networks:   nis [NOTFOUND=return] files
    services:   files nis
    protocols:  files nis
    rpc:        files nis

La libc de GNU proporciona otras acciones descritas en la página del manual nsswitch.