Configuración de NIS

Para ejecutar el software de servidor/cliente de NIS se necesitará ejecutar antes el programa portmap. En RedHat Linux existe un script en /etc//init.d/portmap para arrancar éste demonio. Todo lo que tienes que hacer es añadirlo a un runlevel si deseas que se lanze en el arranque..

El mapeador RPC es un servidor que convierte números de programas RPC en números de puerto de protocolo TCP/IP (o UDP/IP). Debe estar ejecutándose para poder realizar llamadas RPC (que es lo que el software de cliente NIS hace) a servidores RPC (como un servidor NIS) de esa máquina. Cuando un servidor RPC arranca, avisará al mapeador de puertos por cuál puerto está escuchando, y a qué números de programas RPC está preparado para servir. Cuando un cliente desea hacer una llamada RPC a un número de programa dado, primero deberá contactar con el mapeador de puertos de la máquina servidora para determinar el número de puerto al que los paquetes RPC deben ser enviados. El comando rpcinfo nos dará la información de que programas está preparado para servir.

El software necesario para poner en marcha y configurar un servidor o cliente de NIS en una distribución RedHat Linux, es el siguiente:

ypserv
yp-tools
ypbind

Normalmente los servidores RPC estándar son arrancados por xinetd, de modo que el mapeador de puertos (portmap) debe ser iniciado antes de que inetd sea invocado.

Configuración de un cliente NIS

Hay que asegurarse que tenemos instalados los paquete ypbind y yp-tools.

El programa /usr/sbin/ypbind es el servicio cliente de NIS, que nos permitirá interactuar con un servidor NIS y acceder a los mapas que este sirva ( /etc/passwd, /etc/group ). Para comprobar que ypbind funciona correctamente habría que seguir los siguientes pasos:

  1. Tener arrancado el portmap.

  2. Definir el dominio de NIS al cual sirve el servidor con el comando domainname.

  3. Crear el directorio /var/yp sino existe.

  4. Iniciar ypbind: /usr/sbin/ypbind

  5. Usar el comando "rpcinfo -p localhost" para comprobar si ypbind es capaz de registrar su servicio con el mapeador de puertos. El rpcinfo debería producir una salida parecida a:

    	program vers proto   port
    	100000    2   tcp    111  portmapper
    	100000    2   udp    111  portmapper
    	100007    2   udp    637  ypbind
    	100007    2   tcp    639  ypbind
    	300019    1   udp    660
    

  6. Comprobar que puedes acceder a los mapas que sirve el servidor NIS: ypcat passwd Esto debería devolver el mapa passwd del servidor.

Si todo ha funcionado correctamente, deberías automatizar este proceso para que se realizara cada vez que arranque el cliente. En RedHat Linux existe un script llamado /etc/rc.d/init.d/ypbind que acepta {star|stop} para lanzar o parar el servicio. El dominio de NIS se define añadiendo la variable NISDOMAIN al fichero de configuración /etc/sysconfig/network.

El fichero /etc/nsswitch.conf

El fichero de Network Services Switch /etc/nsswitch.conf determina el orden de las búsquedas realizadas cuando se pide una pieza específica de información, de la misma forma que el fichero /etc/host.conf determina la manera en que se realizan las búsquedas de hosts. Por ejemplo, la línea

hosts: files nis dns

especifica que las funciones de búsqueda de host deben primero mirar en el fichero /etc/hosts local, seguido de una búsqueda NIS y, finalmente, usar el DNS (/etc/resolv.conf y named). Si al llegar a este punto no se encuentra el host correspondiente se devuelve un error.

Configuración de un servidor NIS

Habrá que comprobar que está instalado el paquete ypserv (rpm -q ypserv), que es el que nos permitirá instalar un servidor de páginas amarillas o NIS.

Existen dos tipos de servidores NIS: maestros y esclavos. El primero será el servidor principal donde se generarán los mapas que tenemos que servir, mientras que un servidor esclavo mantendrá una copia de los mapas por si no estuviera disponible en algún momento el servidor maestro.

Habrá que editar el fichero /etc/ypserv.conf que nos permitirá configurar algunas opciones para el sevidor ypserv. Normalmnete contiene una lista de reglas para hosts especiales y reglas de acceso a los mapas. El fichero /var/yp/securenets define los derechos de acceso al servidor NIS por parte de los clientes. El fichero contiene pares netmask/network de forma que si la dirección IP del cliente se corresponde con la entrada podrá actuar como cliente de NIS.

Hay que asegurarse que el portmap está corriendo ( rpcinfo -p localhost ) y entonces y solo entonces lanzar el demonio ypserv. El siguiente paso sería generar las bases de datos (mapas) de NIS. En el servidor maestro habrá que ejecutar lo siguiente:

[root@mis01]# /usr/lib/yp/ypinit -m

De esta forma se definirán los servidores esclavos y los mapas que sirve el servidor de NIS. Si se necesita actualizar un mapa, se tiene que ejecutar make en directorio /var/yp del servidor maestro de NIS. Esta acción actualizará el mapa si el fichero fuente es mas nuevo, y colocará los ficheros en los servidores esclavos.

En el servidor esclavo ( puede haber más de uno ) se tendrán que realizar los siguientes pasos. Asegurarse que el portmap está corriendo, ejecutar el demonio ypserv, y entonces llamar al siguiente comando:

[root@mis02]# /usr/lib/yp/ypinit -s mis01

Habrá que asegurarse de que el nuevo servidor esclavo tiene una entrada en el fichero de configuración /etc/ypservers del servidor maestro.

También sería una buena idea editar el fichero crontab de root del servidor esclavo y añadir las sigueintes lineas:

20 *      * * *		/usr/lib/yp/ypxfr_1perhour
40 6      * * *		/usr/lib/yp/ypxfr_1perday
55 6,18   * * *		/usr/lib/yp/ypxfr_2perday

Esto asegurará que la mayoría de los mapas NIS estén actualizados, incluso si una actualización se perdió debido a que el servidor esclavo estaba fuera de servicio en el momento en que el servidor maestro actualizó los mapas.

Si quisiéramos restringir el acceso de los usuarios a nuestro servidor NIS, tendríamos que configurarlo también como un cliente NIS y añadir las entradas necesarias en el /etc/passwd.

El último paso sería automatizar el proceso de poner en marcha el servidor NIS cada vez que arranque la máquina. En RedHat Linux existe el script /etc//init.d/ypserv que acepta los parámetros {start|stop} para lanzar o parar el servicio. Colcándolo en los niveles de ejecución apropiados tendremos listo este proceso.

Habría que considerar que con este método de autentificación en red, si los usuarios quisieran cambiarse sus passwords, el comando normalmente utilizado passwd no cumplirá su función ya que debería actualizar los mapas NIS del servidor pertinentes. Para ello en el servidor NIS debe estar corriendo el demonio rpc.yppasswdd, el cual maneja los cambios de passwords y asegura que la información de los mapas de NIS se actualiza correctamente. En los clientes deberíamos utilizar el comando yppasswd en vez de passwd.