NIS (Network Information Service – Sistema de Información de Red).
Es un protocolo que permite distribuir datos, como usuarios, contraseñas, grupos, hosts, etc a un grupo de computadoras conectadas en red. Esto ayuda que este grupo parezca un sistema individual con las mismas cuentas de usuarios en todos los nodos, de tal forma que se podrá autentificarse con la misma cuenta en cualquier nodo del grupo de computadoras que estan dentro del dominio NIS.
Este protocolo fue dasarrollado por SUN. Inicialmente a NIS se le llamó Páginas Amarillas (Yellow Pages). Pero por ser este nombre registrado por British Telecom se cambio a NIS.
Cuando no se requiere salir a la red internert, este servicio puede sustituir las funciones de DNS.
A continuación se describirá como configurar un servidor NIS maestro, esclavo y el cliente. Para cualquiera de estos servicios es importante considerar los siguientes pasos previos:
1.- Activar el servicio port mapper
2.- Asegurarse que el el archivo /ect/hosts tenga la resolución directa del servidor maestro y los servidores esclavos en caso que también se desee configurar, ejemplo:
149.240.180.100 nombre_del_maestro.pescadoenjabonado.net nombre_del_maestro
3. Se recomienda también que la entrada a 127.0.0.1 no apunte al nombre servidor maestro, es decir, debe quedar así:
127.0.0.1 localhost.localdomain localhost
Configuración de un cliente NIS
Si el cliente se configura de tal forma que pueda recibir respuesta del primer servidor que le pueda responder, se le llama modo broadcast, la otra forma es que dirija su petición a un servidor específico.
1.- En Red Hat Instalar los programas: ypbind y yptools, en Debian el paquete nis.
2.- Integrar un dominio NIS. Esto se hace en el archivo /etc/yp.conf, tiene varias opciones, de las cuales ponemos algunas.
domain NOMBRE_DEL_DOMINIO broadcast
Esto indica a ypbind con que servidor debe contactar. Generalmente un cliente NIS envia una petición a todas la red y cualquier máquina que pueda le responderá (modo broadcast). El cliente confía en que la respuesta es auténtica.
Para hacer transacción un poco más segura pidiendo que se contacte un servidor en particular:
domain NOMBRE_DEL_DOMINIO server NOMBRE_DEL_SERVIDOR
Nota1: Para hacerlo de forma “manual” desde una terminal se hace con la orden:
domainname nombredominio
3.- Para Red Hat
Se establece la variable NISDOMAIN en /etc/sysconfig/network.
ypserver nombre_del_maestro
(Para Solaris 
Se coloca el nombre del dominio en el archivo /etc/defaultdomain. Para evitar que el demonio ypbind busque el servidor por broadcast, se ejecuta el comando ypinit -c y se reinicia el proceso sin la opción -broadcast. Los nombres de los servidores deben aparecer en el /etc/hosts.)
4.- Configurar el fichero /etc/nsswitch.conf
El fichero nsswitch.conf permite configurar un cierto numero de llamadas al sistema de la biblioteca de C, utilizado por la mayoría de ejecutables bajo GNU/Linux.
Si deseamos usar primero únicamente información proporcionada por NIS y después por archivos locales, podríamos hacer esto:
passwd: nis files
group: nis files
shadow: nis files
No es aconsejable poner solo NIS, porque si falla el servidor o si falla ypbind nos quedamos sin acceso a la máquina.
Hace años se modificaban en algunas distribuciones los archivos passwd, group y sahdown como se describe abajo, según yo ahora ya no es necesario, pero lo explicamos por si es necesario.
El fichero /etc/passwd
Para hacer que /etc/passwd busque información en el servicio de NIS debemos agregar una línea tal que asi:
+::::::
El + indica al sistema que debe interrogar a NIS para completar los datos que le falten (los campos vacios). Esta línea se coloca al final del fichero, lo que nos permite tener usuarios locales que podran identificarse sin pasar por NIS.
Tambien podemos prohibir a ciertos usuarios de NIS el acceso a la máquina. Para ello usamos la línea:
-usuario1::::::
-usuario2
+::::::
Las dos primeras líneas invalidan el acceso a los suarios 1 y 2. Si deseamos dar acceso a un número muy restringido de usuarios, la forma de hacerlo será:
+autorizado1::::::
+autorizado2::::::
+::::::/bin/false
Con esto los usuarios autorizados serán aceptados y todos los demás irán a parar a un /bin/false y no tendrán acceso al sistema.
Como esto se indica el en /etc/passwd se superpone a las posibles respuestas que pudiera ofrecer NIS.
Fichero /etc/group
Hay que modificar este fichero igual que hemos hecho con el /etc/passwd
+:::
y en /etc/shadow
+:::::::
Si el sistema hace uso de GSHADOW, ha de adaptar el archivo /etc/gshadow a NIS, para ello se debe seguir el ejemplo del archivo /etc/group.
Después de los cambios hay que reiniciar el servicio: /etc/rc.d/init.d/ypbind restart
o /etc/init.d/nis restart de acuerdo a la distribución utilizada.
Un servidor NIS no exporta directamente ficheros tal como son. Transfiere una serie de bases de datos dbm (una para cada uno de los ficheros compartidos) que se generan en en el momento de la configuración.
Configuración de un cliente NIS en Red Hat con la orden: system-config-authentication
Red Hat tiene la herramienta gráfica: system-config-authentication que ayuda a hacer esto mas trivial, esta herramienta la puedes ejecutar desde la terminal, permitiendo configurar el cliente como lo muestran la siguiente imágen:

Esta herramienta coloca el valor de la variable NISDOMAIN en el archivo /etc/sysconfig/network con el nombre del dominio NIS:
NISDOMAIN=dominionis
También configura el archivo /etc/yp.conf ya citado:
domain dominionis server 146.245.180.1
modifica el archivo /etc/nsswitch.conf:
passwd: files nis
shadow: files nis
group: files nis
y le da valor a la variable USENIS=yes en el archivo /etc/sysconfig/authconfigy finalmente modifica … en el archivo /etc/pam.d/system-auth-ac quedando:
password sufficient pam_unix.so md5 shadow nis nullok try_first_pass use_authtok
Configuración requerida en el servidor maestro para que funcione el servidor esclavo:
1.- En el archivo /var/yp/Makefile se le indica que envíe automáticamente a los servidores esclavos cualquier modificación efectuada en el servidor maestro:
NOPUSH="false"
2.- Se añade los nombres de los servidores esclavos en el archivo /var/yp/ypservers del servidor maestro, asegurándose de tener entrada para todos los servidores en /etc/hosts, también esto puede hacerse ejecutando:
/usr/lib/yp/ypinit -m
Esto le propociona al servidor maestro el nombre de nuestro servidor esclavo; los mapas son reconstruídos.
Ejemplo:
[root@pescado /root]# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. testsys.mydomain.nis is in the list of NIS server hosts. Please continue
to add the names for the other hosts, one per line.
When you are done with the list, type a <control D>.
next host to add: nombre_del_maestro.pescadoenjabonado.net
next host to add: nombre_del_esclavo.pescadoenjabonado.net
|
3.- Para que finalmente el servidor esclavo reciba los datos o mapas del servidor maestro, se debe ejecutar /etc/init.d/nis restart en el server esclavo.
Configurando un servidor NIS esclavo en Debian
La gente que se dedica a esto recomiendo que primero se configure el nodo esclavo como un maestro de NIS, pero en lugar de elaborar los mapas de NIS se ejecuta la orden ypinit. Asegurate despues de tener configurado los siguiente:
1.- Asegurarse que en el archivo /etc/host exista la entrada correspondiente al servidor maestro,
ejemplo:
127.0.0.1 localhost
149.240.180.100 nombre_del_maestro.pescadoenjabonado.net nombre_del_maestro
2.- Establecer el nombre de dominio NIS en /etc/defaultdomain
ejemplo:
midominionis
3.- Indicamos el rol del servidor en el archivo /etc/default/nis:
NISSERVER=slave
4.- Reiniciamos el servivio NIS:
/etc/init.d/nis restart
5.- En el servidor esclavo, inicializamos ypserv para transferir los mapas:
ypinit -s nombre_del_maestro
6.- Nota adicional (solo para Debian):
El servidor maestro utiliza el programa yppush para notificar a sus esclavos que hagan copia de los datos utilizando el programa ypxfr. Pero en caso que en ese momento los esclavos no esten funcionando quedaran desactualizados o defasados del maestro debido a que este no repite la notificación en forma regular, es decir solo la hace cuando se modifican sus datos y se ejecuta el “make” (/var/yp/Makefile).
Por ello se recomienda planificar transferencias en los servidores esclavos, y para ello se utilizan scripts en el directorio /var/lib/yp los cuales son: ypxfr_1perday, ypxfr_2perday y ypxfr_1perhour, la diferencia de estos es que el primero transfiere todos los mapas, mientras que los otros sólo transfieren aquellos más propensos a cambios durante el día.
Ejemplo de una entrada en el cron, sobre el archivo: /etc/cron.d/nis
15 * * * * root /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1
30 3 * * * root /usr/lib/yp/ypxfr_1perday >/dev/null 2>&1
50 3,23 * * * root /usr/lib/yp/ypxfr_2perday >/dev/null 2>&1 |
Configurando un servidor NIS esclavo en Red Hat/CentOS
Tambien se requieren los cambios ya mecionados en el servidor maestro.
Para Red Hat se hacen los mismos pasos excepto: 3 y 6 y el punto 2 queda:
2.- Establecer el nombre de dominio NIS en /etc/sysconfig/network, ejemplo:
NIS_DOMAIN=midominionis
Para darle de forma “manual” (no guarda después de reiniciar) el dato, se hace con la orden:
domainname midominionis
Configuracion un servidor NIS maestro:
1.- Construir las tablas de NIS:
La configuración de los mapas que se exportan se encuentran el el archivo Makefile,
también se encuentrán los valores de variables ( Abajo veamos un ejemplo de una parte de dicho archivo) que queremos enviar a los nodos o computadoras.
# Copyright 1996-2003 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Set the following variable to "-b" to have NIS servers use the domain name
# resolver for hosts not in the current domain.
#B=-b
B=
DIR =/var/yp/etc
#
RBACDIR=/etc/security
PWDIR =/var/yp/etc
DOM = `domainname`
#NOPUSH = ""
NOPUSH =false
ALIASES = /var/yp/etc/mail.aliases
YPDIR=/usr/lib/netsvc/yp
SBINDIR=/usr/sbin
YPDBDIR=/var/yp
YPPUSH=$(YPDIR)/yppush
MAKEDBM=$(SBINDIR)/makedbm
MULTI=$(YPDIR)/multi
REVNETGROUP=$(SBINDIR)/revnetgroup
STDETHERS=$(YPDIR)/stdethers
STDHOSTS=$(YPDIR)/stdhosts
MKNETID=$(SBINDIR)/mknetid
MKALIAS=$(YPDIR)/mkalias
.
. |
Es necesario ejecutar la orden make sobre el directorio /var/yp (o sobre /var/yp/etc) si se realizan cambios en el archivo Makefile o si se cambian los usuarios, hosts, etc.
2.- Se establece el nombre de dominio
3.- Con la orden ypinit -m se crean los mapas e inicializa el servidor (-m=maestro), y permitirá una lista de servidores esclavos.
4.- Y Finalmente inicializar el programa ypserv para establecer el servidor.
Administración con Netgroups:
NIS tiene una utilidad llamada netgroups que puede permitir o denegar el acceso y por medio de grupos dar pervilegios. Esros grupos se definen en /etc/netgroup o en el path que se indique en el archivo Makefile.
Veamos un ejemplo del archivo netgroup:
nombregrp1 (nombrehost1, nombreusuario1, nombredominio) (nombrehost1,,)
nombregrp2 (nombrehost2,-,-) (nombrehost3,-,-)
nombregrp3 nombregrp1 nombregupo2 |
Como se observa el grupo puede estar definido de dos formas. La primera consiste en colocar entre paréntesis 3 campos separado por comas que definen el nombre del host, nombre del usuario y el nombre del dominio. El espacio vacío significa permitir a todos y el “-” ninguno. La segunda consiste en definir un grupo como una lista de grupos.
El cliente puede definir el netgroup que va importar, para ello agrega una entrada en el archivo passwd de la forma:
+@nombregrp1:::::::
A continuación algunas ordenes y demonios utiles:
ypserv Demonio del servidor de NIS
ypbind Demonio del cliente de NIS
domainname Establece el nombre del dominio al que pertenece una maquina
ypxfr Descarga los mapas actualizados del servidor
ypxfrd Maneja peticiones de ypxfr en el servidor
yppush Hace que los mapas se actualicen en los servidores esclavos
makedbm Construye un archivo hash desde un archivo plano (flat file)
ypmake Reconstruye los mapas de hash una vez que se han actualizado
ypinit Configura un host como servidor maestro o esclavo
ypset Hace que ypbind se conecte a un servidor espec ??fico
ypwhich Muestra que servidor esta usando el host
(ej. ypwhich -m passwd, da a saber cual es el servidor del mapa passwd)
yppoll Muestra que version de los mapas se estan usando
ypcat Imprime los valores contenidos en los mapas
ypmatch Imprime las entradas para un argumento especificada
yppasswd Cambia una contrasenna en el servidor maestro
ypchfn Cambia el GECOS en el servidor maestro
ypchsh Cambia el shell por defecto en el servidor maestro
yppasswdd Servidor para yppasswd, ypchsh e ypchfn
ypupdated Servidor para la actualizacion de mapas
ypdomainname Para conocer el dominio NIS.
getent Recupera una entrada (ej. getent passwd usuario) |