NIS paso a paso
Sergio González González
Instituto Politécnico de Bragança, Portugal
sergio.gonzalez@hispalinux.es
Guía rápida para la instalación del servicio NIS (Network Information Service) en un sistema Debian GNU/Linux en su versión inestable, también conocida como Sid.
Introducción
Este documento muestra los pasos necesarios para instalar un sistema NIS en Debian GNU/Linux (Sid) de manera rápida. Por lo tanto, los pasos no se detallarán en profundidad.
La instalación de un sistema NIS puede realizarse de tres formas: modo cliente, modo servidor primario y modo servidor secundario. Aquí trataremos las tres opciones.
Para la generación de esta documentación se han utilizado dos documentos: nis.debian.howto.gz, que viene junto con el paquete de NIS para Debian GNU/Linux, las páginas del manual de NIS y The Linux NIS(YP)/NYS/NIS+ HOWTO (http://www.linux-nis.org/nis-howto/HOWTO/NIS-HOWTO.html)
Pasos genéricos
A continuación se muestran los pasos genéricos de una instalación de NIS. Estos pasos han de darse en todos los casos, ya sea para instalar un sistema cliente o uno servidor.
Instalación
En primer lugar instalamos NIS, para ello ejecutamos:
# apt-get install nis
En el proceso de instalación hemos de definir el nombre del dominio que utilizaremos en NIS. Si por cualquier motivo necesitamos cambiarlo, editamos el archivo /etc/defaultdomain.
Una vez se ha terminado de instalar el paquete, hemos de configurar una serie de archivos antes de tener nuestro sistema NIS funcionando. Algunos de estos archivos son: /etc/nsswitch.conf, /etc/passwd, /etc/group.
Activar el servicio time
Para el correcto funcionamiento de NIS es necesario habilitar el servicio time. Para ello, y dependiendo de si utilizamos el superservidor inetd o xinetd añadiremos las siguientes líneas a los respectivos archivos de configuración.
inetd
Las siguientes dos líneas han de estar presentes en el archivo /etc/inetd.conf:
time           stream  tcp     nowait  root    internal
time           dgram   udp     wait    root    internal
xinetd
Si nuestro sistema utiliza xinetd, tendremos que activar el servicio time editanto el archivo /etc/xinetd.d/time de forma que su contenido sea algo similar a:
# default: off
# description: An RFC 868 time server. This protocol provides a
# site-independent, machine readable date and time. The Time service sends back
# to the originating source the time in seconds since midnight on January first
# 1900.
# This is the tcp version.
service time
{
        disable         = no
        type            = INTERNAL
        id              = time-stream
        socket_type     = stream
        protocol        = tcp
        user            = root
        wait            = no
}

# This is the udp version.
service time
{
        disable         = no
        type            = INTERNAL
        id              = time-dgram
        socket_type     = dgram
        protocol        = udp
        user            = root
        wait            = yes
}

Reinicio del superservidor
Una vez está configurado el servicio correctamente, reiniciamos el superservidor correspondiente y reiniciamos el servicio portmap
Nota: En el caso de estar utilizando el superservidor inetd:
# killall -HUP inetd
Nota: En el caso de utilizar el superservidor xinetd:
# /etc/init.d/xinetd restart
Configurar el archivo /etc/nsswitch.conf
Hemos de asegurarnos que el archivo /etc/nsswitch.conf contenga las siguientes líneas:
     passwd:   compat
      group:    compat
      shadow:   compat
      netgroup: nis

Orden en la búsqueda de los hosts
Si desea que los hosts sean buscados mediante NIS, ha de añadir la palabra nis al archivo /etc/host.conf de la siguiente forma:
order hosts,nis,bind
multi on
Instalación de un cliente NIS
Para configurar un cliente NIS, seguiremos los siguientes pasos (suponiendo que ya se han realizado los pasos de la sección anterior):
Especificar la localización del servidor NIS
ypbind es el demonio encargado de buscar los servidores para un determinado dominio y de mantener la información actualizada relativa a dicho dominio. Para configurar este demonio y por tanto la localización del servidor NIS, tenemos que editar el archivo /etc/yp.conf. Se puede especificar el nombre del servidor (siempre y cuando dicho nombre esté en el archivo /etc/hosts o sea resolvido mediante DNS) o su dirección IP. Para ver más formas de configuración del demonio ypbind consulte la página del manual del mismo.
Si nuestro servidor NIS es 192.168.0.4, el archivo de configuración quedaría:
#
# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.

ypserver 192.168.0.4

Configuración del archivo /etc/passwd
Para permitir el acceso a todos los usuarios, añada la siguiente línea al final de /etc/passwd:
+::::::
Si quiere afinar el acceso, puede especificar aquellos usuarios a los que le permite (+) o no (-) el acceso. Así, si quisiese que sólo los usuarios juan, paulo y fran tengan permisos de acceso, pero el usuario roberto no lo tenga, añadimos las siguientes líneas al final de /etc/passwd:
+juan:::::::
+paulo:::::::
+fran:::::::
-roberto
+:*::::::/bin/false

Nota: La última línea: +:*::::::/bin/false indica que, por defecto, los usuarios no tendrán acceso a nuestra máquina.
Aviso
Si utiliza shadow passwords, ha de adaptar el archivo /etc/shadow a NIS. Para ello, sigua el ejemplo de /etc/passwd (adaptando las entradas al formato del archivo /etc/shadow).

Configuración del archivo /etc/group
La configuración de acceso de los distintos grupos de nuestro sistema se hace mediante el archivo /etc/group. Para ello, si quiere permitir el acceso a todos los grupos de su sistema, añada la siguiente línea al final del archivo:
+:::
Aviso
Si su sistema hace uso de GSHADOW, ha de adaptar el archivo /etc/gshadow a NIS, para ello sigua el ejemplo del archivo /etc/group.

Arrancar NIS
Ahora ya podemos arrancar nuestro cliente NIS, para ello tecleamos:
# /etc/init.d/nis stop
# /etc/init.d/nis start
Instalación de un servidor principal para NIS
A continuación configuraremos un servidor principal para NIS:
Definición de los servidores existentes
Ha de asegurarse de que en el archivo /etc/hosts de cada servidor hay una entrada para cada uno de los restantes servidores que conforman la red NIS. Esto es necesario porque NIS no hace uso del servicio DNS.
Un ejemplo del archivo /etc/hosts podría ser:
127.0.0.1      localhost
192.168.0.1      host1.dominionis       host1
192.168.0.2      host2.dominionis       host2
192.168.0.3      host3.dominionis       host3

Configurar el servidor NIS como master
Edite el archivo /etc/default/nis y establezca la variable NISSERVER a master:
NISSERVER=master
Añadiendo seguridad al servidor NIS
Si quiere añadir algo de seguridad a su servidor NIS, ha de adaptar los archivos /etc/ypserv.securenets y /etc/ypserv.conf a sus necesidades. Esto se sale de los objetivos de este documento, por lo que sería conveniente que revisase la documentación de NIS para realizar esta tarea.
Arrancar NIS
Ahora ya podemos arrancar nuestro servidor NIS, para ello tecleamos:
# /etc/init.d/nis stop
# /etc/init.d/nis start
Configuración del servidor
El servidor se configura ejecutando: “/usr/lib/yp/ypinit -m”, de todas formas, antes de ejecutarlo ha de configurar algunos detalles:
•	Cree, si no existe, el archivo /etc/networks, para ello puede ejecutar el siguiente comando:
# touch /etc/networks
•	Para restringir el acceso al servidor NIS, puede modificar el archivo /etc/passwd como vimos en la configuración del cliente. De esta forma, los únicos usuarios que tendrán acceso (si así se configura) son aquellos que están por debajo de la primera entrada NIS del archivo /etc/passwd.
Un ejemplo podría ser el siguiente, donde el usuario juan tiene acceso al sistema, pero el usuario prueba no:
root:x:0:0:root:/root:/bin/bash
daemon:*:1:1:daemon:/usr/sbin:
bin:*:2:2:bin:/bin:
sys:*:3:3:sys:/dev:
sync:*:4:100:sync:/bin:/bin/sync
games:*:5:100:games:/usr/games:
man:*:6:100:man:/var/catman:
lp:*:7:7:lp:/var/spool/lpd:
mail:*:8:8:mail:/var/spool/mail:
news:*:9:9:news:/var/spool/news:
uucp:*:10:50:uucp:/var/spool/uucp:
nobody:*:65534:65534:noone at all,,,,:/dev/null:
+juan::::::
+:*:::::/bin/false
[ Todos los usuarios después de esta línea ]
prueba:*:299:10:Una cuenta de pruebas:/tmp:
juan:1234567890123:101:10:Juan Roca:/home/juan:/bin/bash

Nota: Puede cambiar la localización del archivo /etc/passwd editando /etc/default/nis y modificando la variable YPPWDDIR de forma que se adapte a sus necesidades.
Aviso
Tenga en cuenta que el usuario root puede variar la información de los usuarios del sistema (clave, shell y la información finger). Si esta información se modifica manualmente, ha de actualizar la información de los mapas de NIS, para ello se ejecuta un make en el directorio /var/yp. Esto se puede hacer automáticamente gracias a cron.

Instalación de un servidor secundario para NIS
Los pasos para la instalación de un servidor NIS son:
•	Configurar el sistema como si se tratase de un cliente NIS.
•	Edite el archivo /etc/default/nis y establezca la variable NISSERVER a slave:
NISSERVER=slave
•	Indique a su servidor principal que posee servidores secundarios. Para ello edite el archivo /var/yp/Makefile y establezca el valor de la variable NOPUSH a false:
NOPUSH="false"
Una vez realizado esto, ejecute el siguiente comando y añada los servidores secundarios que posea:
# /usr/lib/yp/ypinit -m
•	Arranque el servidor secundario e inicialicelo, para ello ejecute:
# /etc/init.d/nis stop
# /etc/init.d/nis start
# /usr/lib/yp/ypinit -s <coloque_el_nombre_de_su_servidor_principal_aqui>
Nota: Puede colocar las siguientes líneas en la entrada nis del cron de sus servidores secundarios: 
20 *    * * *    root  /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1
40 6    * * *    root  /usr/lib/yp/ypxfr_1perday  >/dev/null 2>&1
55 6,18 * * *    root  /usr/lib/yp/ypxfr_2perday  >/dev/null 2>&1
 Estas mantienen actualizados los mapas de los servidores secundarios.
Sobre este documento
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, versión 1.1 o cualquier versión posterior publicada por la Free Software Foundation. Puedes consultar una copia de la licencia en http://www.gnu.org/copyleft/fdl.html (http://www.gnu.org/copyleft/fdl.html)