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. 1. 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) 2. 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. 2.1. 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. 1 NIS paso a paso 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. 2.2. 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. 2.2.1. inetd Las siguientes dos líneas han de estar presentes en el archivo /etc/inetd.conf: time time stream dgram tcp udp nowait wait root root internal internal 2.2.2. 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 } 2 NIS paso a paso 2.2.3. 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 2.3. 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 2.4. 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 3. 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): 3 NIS paso a paso 3.1. 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 # # # # # # IMPORTANT: # # # 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. 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 3.2. 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). 4 NIS paso a paso 3.3. 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. 3.4. Arrancar NIS Ahora ya podemos arrancar nuestro cliente NIS, para ello tecleamos: # /etc/init.d/nis stop # /etc/init.d/nis start 4. Instalación de un servidor principal para NIS A continuación configuraremos un servidor principal para NIS: 4.1. 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 192.168.0.1 192.168.0.2 192.168.0.3 localhost host1.dominionis host2.dominionis host3.dominionis host1 host2 host3 4.2. Configurar el servidor NIS como master Edite el archivo /etc/default/nis y establezca la variable NISSERVER a master: NISSERVER=master 5 NIS paso a paso 4.3. 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. 4.4. Arrancar NIS Ahora ya podemos arrancar nuestro servidor NIS, para ello tecleamos: # /etc/init.d/nis stop # /etc/init.d/nis start 4.5. 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. 6 NIS paso a paso 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. 5. 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 * * * * 40 6 * * * 55 6,18 * * * root root root /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1 /usr/lib/yp/ypxfr_1perday >/dev/null 2>&1 /usr/lib/yp/ypxfr_2perday >/dev/null 2>&1 Estas mantienen actualizados los mapas de los servidores secundarios. 7 NIS paso a paso 6. 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) 8