<!-- 0,1 -->
<!-- LiNUX NIS(YP)/NIS+/NYS,0 -->
<!-- Erwin,Embsen,erwin@nioz.nl -->
<!-- 0.5,1995-01-24 -->
<!-- NIS(YP)/NIS+/NYS -->
<!-- Carlos,Martínez Txakartegi,txakar@rigel.deusto.es -->
<!-- 1.0,1996-07-18 -->
<!-- NIS,YP,NYS,NIS+ -->
<!-- Software,Protocolos,NIS -->

<!doctype linuxdoc system>

<article>

<title>NIS(YP)/NIS+/NYS COMO

<author>Andrea Dell'Amico, Mitchum DSouza, Erwin Embsen, Peter Eriksson &nl; 
Traducción de Carlos Martinez Txakartegi, 
<tt><htmlurl url="mailto:txakar@rigel.deus
to.es" name="txakar@rigel.deusto.es"></tt>  

<date>l0.5, 24 de Enero de 1995 

18 de Julio de 1996

<abstract>
Configuración y detalles de NIS(YP), NIS+ y NYS (Yellow Pages), sistemas
de autentificación distribuída.
</abstract>

<toc>

<sect>Glosario

<p>
En este documento se han usado muchos acrónimos. Aquí se listan los más 
importantes junto a una breve explicación:

<descrip>
<tag/DBM/<it>DataBase Management</it>, una librería de funciones que mantiene 
	pares clave-contenido en una base de datos.

<tag/DLL/<it>Dynamically Linked Library</it>, una librería enlazada a un programa 
	ejecutable en tiempo de ejecución.

<tag/domainname/Un nombre "clave" que es usado por clientes NIS para ser 
	capaces de localizar un servidor NIS adecuado que sirve a esa clave 
	domainname. Notar que esto no tiene nada que ver necesariamente con el 
	"dominio" (nombre de máquina) DNS de la(s) máquina(s).

<tag/FTP/<it>File Transfer Protocol</it>, un protocolo usado para transferir 
	ficheros entre dos ordenadores.

<tag/libnsl/<it>Name services library</it>, una librería de llamadas a servicios
	de nombres (<tt/getpwnam, getservbyname,/ etc...) en Unixes SVR4.

<tag/libsocket/<it/Socket services library/, una librería para llamadas a 
	servicios de sockets (<tt/socket, bind, listen,/ etc...) en Unixes SVR4.

<tag/NIS/<it>Network Information Service</it>, un servicio que proporciona 
	información, que tiene que ser conocida por toda la red, a todas las 
	máquinas de la red. Hay soporte para NIS en la librería estándar de 
	Linux <tt/libc/, y a la que en el texto nos referiremos como 
	"NIS tradicional".

<tag/NIS+/<it>Network Information Service</it> (Plus :-), es esencialmente un NIS con 
	``esteroides''. NIS+ fue diseñado por <it/Sun Microsystems Inc./ como 
	un 
	sustituto de NIS, con una mejor seguridad y un mejor manejo de 
	_grandes_ instalaciones.

<tag/NYS/Este es el nombre de un proyecto que viene de NIS+,YP y Switch y 
que está organizado por Peter Eriksson <tt>&lt;pen@lysator.liu.se></tt>. 
Contiene, 
entre otras cosas, una completa reimplementación del código del NIS (=YP) 
usando la funcionalidad del <it/Name Services Switch/ de la librería NYS.

<tag/RPC/<it>Remote Procedure Call</it>. Las rutinas RPC permiten a los programas 
	en C realizar llamadas a procedimientos en otras máquinas a través 
	de la red. Cuando la gente habla de RPC, normalmente se refiere 
	a la variante SunRPC.

<tag/YP/<it>Yellow Pages(tm)</it>, Páginas Amarillas en Inglés, es una marca registrada 
	en el Reino Unido por la <it/British Telecom plc./ (la telefónica 
	inglesa, vamos).

<tag/TCP-IP/<it>Transmission Control Protocol/Internet Protocol</it>. Es un 
	protocolo de comunicación de datos usado a menudo en máquinas Unix.
</descrip>


<sect1>Algo de Información General

<p>
Las siguientes líneas están sacadas del <it>Sun(tm) System &amp; Network 
Administration Manual</it>:

<tscreen><verb>
    "NIS se llamaba en un principio Sun Yellow Pages (YP)
     pero el nombre Yellow Pages(tm) es una marca registrada
     en el Reino Unido por la British Telecom plc y no 
     puede ser usado sin permiso."
</verb></tscreen>

NIS viene de <it/Network Information Service/. Su propósito es proveer 
información, que tiene que ser conocida a lo largo de la red, a todas las 
máquinas de la red. La información más indicada para ser distribuida por 
NIS es:

<itemize>
<item>nombres de login/passwords/directorios home (<tt>/etc/passwd</tt>)
<item>información de grupos (<tt>/etc/group</tt>)
</itemize>

Así que, por ejemplo, si la entrada de tu password está grabada en la base 
de datos <tt/passwd/ de NIS, serás capaz de entrar en todas las máquinas de la 
red que tengan corriendo los programas clientes NIS.

Sun es una marca registrada de <it/Sun Microsystems, Inc./ licenciada a 
<it/SunSoft, Inc./


<sect>Introducción

<p>
Cada vez más y más máquinas Linux están siendo instaladas como parte de una 
red de computadoras. Para simplificar la administración de la red, la 
mayor parte de las redes (sobre todo, redes basadas en máquinas Sun) 
ejecutan el <it/Network Information Service/. Las máquinas Linux pueden sacar
gran partido a los servicios NIS existentes o proveer servicio NIS por sí 
mismas. Pueden incluso (con la librería NYS) actuar como un cliente NIS+ 
limitado.

Este documento intenta responder cuestiones sobre la configuración de 
NIS(YP) en tu máquina Linux. No habla sobre cómo configurar NIS+. No 
olvides leer la sección <ref id="puertosrpc">



<sect1>Nuevas Versiones de Este Documento (En inglés)

<p>

Nuevas versiones de este documento serán enviadas periódicamente 
(aproximadamente, cada mes) a los newsgroups <tt>comp.os.linux.announce</tt> y 
<tt>comp.os.linux.misc</tt>. Este documento se encuentra archivado en varios 
FTP 
sites, incluyendo <tt>sunsite.unc.edu</tt> en el directorio 
<tt>/pub/Linux/docs/HOWTO</tt>.


<sect1>Nota de Renuncia

<p>

Aunque este documento ha sido recogido con lo mejor de nuestros 
conocimientos, puede contener, y probablemente contendrá, errores. Por 
favor, léete todos los ficheros <tt/README/ adjuntos a cualquiera de los 
varios paquetes de software descritos en este documento para obtener una 
información más detallada y precisa. Nosotros intentaremos mantener este 
documento tan libre de errores como sea posible.


<sect1>FeedBack

<p>
Si tienes algún comentario, preguntas o sugerencias, por favor, 
enviámelas por e-mail a <tt>Erwin Embsen &lt;erwin@nioz.nl></tt>. Y si 
encuentras errores u omisiones obvias, definitivamente debes contactar 
con él<footnote>Aunque me temo que no sabe castellano, así que cuéntale lo 
que sea en inglés...</footnote>. 


<sect1>Agradecimientos

<p>

Nos gustaría agradecer a toda la gente que ha contribuido (directa o 
indirectamente) a la realización de este documento. En orden alfabético:

<tscreen><verb>
Andrea Dell'Amico <adellam@di.unipi.it>
Mitchum DSouza    <Mitch.Dsouza@Dubai.Sun.COM>
Erwin Embsen      <erwin@nioz.nl>
Byron A Jeff      <byron@cc.gatech.edu>
Peter Eriksson    <pen@lysator.liu.se>
</verb></tscreen>

Theo de Raadt <tt>&lt;deraadt@fsa.ca></tt> es responsable del código original 
de 
los yp-clients. Swen Thuemmler <tt>&lt;swen@uni-paderborn.de></tt> portó el 
código de los yp-clients y de las yp-routines en la libc (de nuevo, 
basándose en el trabajo de Theo).


<sect>¿ NIS o NIS+ ?<label id="nisnis+">

<p>

La elección entre NIS y NIS+ es fácil - usa NIS si no tienes que usar 
NIS+ o si no tienes severas necesidades de seguridad. NIS+ es mucho más 
problemático de administrar (es bastante fácil de manejar la parte del
cliente, pero la parte del servidor es horrible). Otro problema es que el 
soporte para NIS+ bajo Linux está todavía en desarrollo --una cosa 
importante de la que todavía carece es del soporte para encriptación y 
autentificación de datos que es _la_ principal razón por la que alguien 
querría usar NIS+...--


<sect1>¿ NIS tradicional o la librería NYS ?

<p>
La elección entre el NIS tradicional o el código NIS de la librería NYS 
es una elección entre vagancia y madurez vs. flexibilidad y deseos de 
aventura.

El código "NIS tradicional" está en la librería C estándar y ha estado 
ahí fuera por mucho tiempo, sufriendo a veces de su edad y de un poco de 
inflexibilidad.

El código NIS de la librería NYS, por otro lado, requiere, una de dos, o 
que recompiles y re-enlaces todos tus programas a la librería <tt/libnsl/, o 
que recompiles la librería libc para que incluya el código libnsl (o tal 
vez puedas ir y obtener una versión precompilada de alguien que ya lo 
haya hecho).

Otra diferencia es que el código tradicional NIS tiene algún soporte para 
Netgroups NIS, cosa que el código NYS no tiene (todavía). Por otro lado, 
el código NYS te permite manejar <em/Shadow Passwords/ de una forma transparente.


<sect>Cómo trabaja

<p>
En una red debe haber al menos una máquina actuando como un servidor NIS. 
Puedes tener múltiples servidores NIS, cada uno sirviendo a diferentes 
"dominios" NIS - o puedes tener servidores NIS cooperativos, donde uno es 
el llamado servidor NIS maestro, y todos los demás son los llamados 
servidores NIS esclavos (¡para un "dominio" NIS determinado, eso es!) - o 
puedes tener una mezcla de ellos...

Los servidores esclavos solo tienen copias de las bases de datos NIS y 
reciben estas copias del servidor NIS maestro cada vez que se realizan 
cambios a las bases de datos maestras. Dependiendo del número de máquinas 
que haya en tu red y de la seriedad de tu red, podrías decidir si instalar 
uno o más servidores esclavos. Cada vez que un servidor NIS se cae o va 
muy lento respondiendo peticiones, un cliente NIS conectado a ese 
servidor intentará encontrar otro que no esté caído o que vaya más rápido.

Las bases de datos NIS están en el formato DBM, que deriva de las bases 
de datos <tt/ASCII/. Por ejemplo, los ficheros <tt>/etc/passwd</tt> y 
<tt>/etc/group</tt> pueden ser directamente convertidos a formato DBM 
usando software de translación ASCII <--> DBM ("<tt/dbload/", incluído con el 
software del servidor). El servidor NIS maestro debería tener ambas, las 
bases de datos ASCII y las DBM.

Los servidores esclavos serán notificados de cualquier cambio en los 
mapas NIS, (vía el programa "<tt/yppush/"), y recibirán automáticamente los 
cambios necesarios para sincronizar sus bases de datos. Los clientes NIS 
no necesitan hacer esto ya que éstos siempre hablan directamente con el 
servidor NIS para leer la información almacenada en sus bases de datos DBM.

El autor de los clientes YP para Linux nos ha informado de que el ypbind 
más reciente (del paquete <tt/yp-clients.tar.gz/) es capaz de obtener el 
servidor a partir de un fichero de configuración --lo que quiere decir 
que no es necesario un broadcast (lo cual es inseguro, debido al hecho de 
que cualquiera podría instalar un servidor NIS y contestar a las 
peticiones de broadcast...).--



<sect>¿ Qué necesitas para configurar NIS ?

<sect1>El Mapeador de Puertos RPC<label id="puertosrpc"> 

<p>

Para ejecutar algún software de los mencionados más adelante necesitarás 
ejecutar antes el programa <tt>/usr/sbin/rpc.portmap</tt>. Algunas 
distribuciones 
Linux ya tienen código para arrancar éste demonio en <tt>/etc/rc.d/rc.inet2.</tt> 
Todo lo que tienes que hacer es "descomentar" ese código y rearrancar tu 
máquina Linux para activarlo.

El mapeador RPC (<tt/portmap(8c)/) 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.

Normalmente los servidores RPC estándar son arrancados por <tt/inetd(8c)/, de 
modo que el mapeador de puertos debe ser iniciado antes de que <tt/inetd/ sea 
invocado.


<sect1>Determinar si eres Servidor, Esclavo o Cliente.

<p>
Para contestar a esta cuestión debes considerar dos casos:

<enum>
<item>Tu máquina va a ser parte de una red en la que ya existen 
	servidores NIS.

<item>Todavía no tienes servidores NIS en la red.
</enum>

En el primer caso, sólo necesitas los programas cliente (<tt/ypbind, ypwhich,
ypcat, yppoll, ypmatch/). El programa más importante es <tt/ypbind/. Este 
programa debe estar ejecutándose en todos los casos, esto es, debe 
aparecer siempre en la lista de procesos. Es un proceso de los llamados 
demonio y necesita ser iniciado desde el fichero de arranque del 
sistema (ej. <tt>/etc/rc.local</tt>). Tan pronto como <tt/ypbind/ esté en marcha, tu 
sistema se convierte en un cliente NIS.

En el segundo caso, si no tienes servidores NIS, entonces también 
necesitarás un programa servidor NIS (normalmente llamado <tt/ypserv/). La 
sección <ref id="confnys" name="¿ Qué necesitas para configurar NYS ?"> 
describe como configurar un servidor NIS en tu maquina Linux 
usando la implementación del <tt/ypserv/ de Peter Eriksson 
(<tt>&lt;pen@lysator.liu.se></tt>). Nota que ésta implementación NO 
soporta el concepto maestro-esclavo del que hemos hablado en la sección <ref id="nisnis+" name="¿ NIS o NIS+ ?">.  
 Usando este software, todos tus servidores NIS serán servidores 
maestros. Hay otro servidor gratuito disponible, llamado "<tt/yps/", escrito 
por Tobias Reber en Alemania que sí soporta el concepto maestro-esclavo, 
pero que tiene otras limitaciones.


<sect1>El Software

<p>
La librería del sistema "<tt>/usr/lib/libc.a</tt>" (version 4.4.2 y superiores) o 
la librería compartida "<tt>/usr/lib/libc.sa</tt>" y sus DLL relacionadas 
contienen todas las llamadas al sistema necesarias para compilar 
satisfactoriamente el software del cliente y del servidor NIS.

Ha habido informes de gente diciendo que NIS sólo funciona con las 
versiones 4.5.21 y superiores de "<tt>/usr/lib/libc.a</tt>" así que si quieres 
ir a lo seguro, no uses libc's más antiguas. El software de cliente NIS 
puede obtenerse de:

<tscreen><verb>
  Servidor               Directorio                       Nombre de fichero
  
  ftp.uni-paderborn.de   /pcsoft2/linux/local/yp          yp-clients.tar.gz
  ftp.funet.fi           /pub/OS/Linux/BETA/NYS/clients   yp-clients.tar.gz
  ftp.lysator.liu.se     /pub/NYS/clients                 yp-clients.tar.gz
  sunsite.unc.edu        /pub/Linux/system/Network/admin  yp-clients.tar.gz
</verb></tscreen>

Una vez hayas obtenido el software, por favor, sigue las instrucciones 
que vienen con él.


<sect1>Configurar un Cliente NIS usando NIS Tradicional<label id="conficli">

<p>
Asumiendo que hayas compilado satisfactoriamente el software, ya estarás 
preparado para instalarlo. Un lugar idóneo para el demonio <tt/ypbind/ es el 
directorio <tt>/usr/sbin</tt>.

Por supuesto, para ello deberás entrar como root. Los otros binarios 
(<tt/ypwhich, ypcat, yppoll, ypmatch/) deben ir en un directorio accesible por 
todos los usuarios, <tt>/usr/etc</tt> o <tt>/usr/local/bin</tt> por ejemplo. Sería una 
buena idea probar el <tt/ypbind/ antes de incorporarlo en <tt>/etc/rc.d/rc.inet2</tt>.

Para probar el <tt/ypbind/ haz lo siguiente:

<itemize>
<item>Asegúrate de que tienes establecido ya tu nombre de dominio. Si no 
	lo tienes ejecuta el comando:

	<tscreen><verb>
	    /bin/domainname-yp nis.domain
	</verb></tscreen>
	
	donde <tt>nis.domain</tt> debe ser alguna cadena de caracteres, 
	que normalmente ¡_NO_ debe estar relacionada con el nombre de 
	dominio de tu máquina! La razón para esto es que hace un poco más 
	difícil a crackers externos el obtener la base de datos de passwords 
	de tus servidores NIS. Si no sabes cuál es el nombre de dominio 
	NIS de tu red, pregunta al administrador de tu sistema/red.

<item>Arrancar "<tt>/usr/sbin/rpc.portmap</tt>" si no está ya ejecutándose.

<item>Crear el directorio "<tt>/var/yp</tt>" si no existe.

<item>Iniciar "<tt>/usr/sbin/ypbind</tt>"

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

      <tscreen><verb>
       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
      </verb></tscreen>

<item>Podrías también ejecutar "<tt/rpcinfo -u localhost ypbind/". Este 
	comando debería producir una salida similar a:

      <tscreen><verb>
        program 100007 version 2 ready and waiting
      </verb></tscreen>

</itemize>

Finalmente, no olvides que para búsquedas de nodos debes establecer (o 
añadir) "<tt/nis/" a la entrada de orden de búsquedas en tu fichero 
<tt>/etc/host.conf</tt>. Por favor, lee la página man "<tt/resolv+.8/" para más 
detalles. 

En este punto, ya podrías usar programas cliente NIS como <tt/ypcat/, etc... 
Por ejemplo, "<tt/ypcat passwd/" te devolverá la base de datos NIS de 
los passwords completa.

IMPORTANTE: Si te saltaste el procedimiento de prueba asegúrate de que 
has establecido el nombre de dominio, y creado el directorio:

<tscreen><verb>
    /var/yp
</verb></tscreen>

Este directorio DEBE existir para que <tt/ypbind/ pueda iniciarse 
satisfactoriamente.

Si el test funcionó, puede que ahora quieras cambiar los ficheros 
<tt>/etc/rc.d/rc.M</tt> y <tt>/etc/rc.d/rc.inet2</tt> en tu sistema para que <tt/ypbind/ se 
inicie durante el arranque y para que tu sistema actúe como un cliente 
NIS. Edita el fichero <tt>/etc/rc.d/rc.M</tt> y busca los comandos que establecen 
el nombre de dominio. Cambia el nombre de dominio por el nombre de tu 
dominio. También, edita el fichero <tt>/etc/rc.d/rc.inet2</tt>, ``descomenta'' las 
líneas que inician el demonio <tt/rpc.portmap/, y añade las siguientes líneas 
justo después del lugar donde se arranca <tt/rpc.portmap/:

<tscreen><verb>
    #
    # Arranca el demonio ypbind:
    #
    if [ -f ${NET}/ypbind -a -d /var/yp ]; then
        echo -n " ypbind"
        ${NET}/ypbind
    fi
</verb></tscreen>

Al contrario que con la implementación de Sun del NIS no necesitas editar 
los ficheros <tt>/etc/passwd</tt> y <tt>/etc/group</tt> para poder aprovechar NIS. La 
implementación de Sun necesita una línea "<tt>+:*:0:0:::</tt>" en el <tt>/etc/passwd</tt> y 
una línea "<tt>+:*:0:</tt>" en el <tt>/etc/group</tt> para decirle a NIS que busque en las 
bases de datos NIS de los passwords y de los grupos.

IMPORTANTE: Nota que el comando finger te informará con mensajes "no such 
user" si no añades la línea "<tt>+:*:0:0:::</tt>" en <tt>/etc/passwd</tt>. Volver a 
poner la línea "<tt>+:*:0:0:::</tt>" en <tt>/etc/passwd</tt> arreglará el finger.

Bueno, esto es todo. Rearranca la máquina y observa los mensajes de arranque 
para ver si ypbind efectivamente se ha iniciado.

IMPORTANTE: Nota que la característica netgroup está implementada 
empezando en la libc v4.5.26. Los netgroups permiten control de acceso 
para cada máquina y para cada usuario en el dominio NIS, y requieren una 
entrada como ésta:

<tscreen><verb>
    +@this_machine_users
</verb></tscreen>

en <tt>/etc/passwd</tt>. Pero si tienes una versión de libc anterior a la 4.5.26, 
todos los usuarios de la base de datos NIS de passwords pueden acceder a 
tu máquina Linux si ejecutas "<tt/ypbind/".


<sect>¿ Qué necesitas para configurar NYS ?<label id=confnys>

<sect1>Determinar si eres un Servidor, Esclavo o Cliente.

<p>
Para contestar esta cuestión debes considerar dos casos:

<itemize>
<item>Tu máquina va a ser parte de una red en la que ya existen
        servidores NIS.

<item>Todavía no tienes servidores NIS en la red.
</itemize>

En el primer caso tienes dos opciones:

<itemize>
<item>O reenlazas todos los programas cliente y demonio con la librería 
	NYS <tt>libnsl.so</tt> (o las enlazas estáticamente con 
	<tt>libnsl.a</tt>). Esto supone añadir la línea:

	<tscreen><verb>
	    LIBS=-lnsl
	</verb></tscreen>

	a tu Makefile, que indica que quieres enlazar la Network Services 
	Library. Básicamente, todos los demonios de red y el programa 
	"<tt/login/" necesitan ser recompilados.

<item>O puedes recompilar la librería C estándar <tt>libc</tt> para que 
	incluya las funciones de librería de los clientes NYS, y después 
	reenlazar todos los programas enlazados estáticamente (los programas 
	enlazados dinámicamente tienen la nueva versión de libc 
	automáticamente). Para más información sobre ésta opción, mira la 
	sección<ref id="hazusar" name="Haz usar NYS a tus binarios">  más abajo.
</itemize>

De forma similar al caso del NIS tradicional, si no tienes servidores NIS, 
entonces también necesitarás un programa servidor NIS (normalmente 
llamado <tt/ypserv/) y tendrás que designar una de las máquinas de tu red como 
servidor NIS maestro. De nuevo, quizás quieras establecer al menos un 
servidor esclavo junto con el maestro.


<sect1>El Software

<p>

Necesitas obtener y compilar la librería <tt/libnsl.so/ de servicios NYS. Si 
no tienes las herramientas DLL instaladas puedes obtener una librería 
precompilada compartida, estática o en código fuente del mismo servidor 
mencionado más abajo. Nota, de todos modos, que la versión precompilada 
puede ser (y probablemente es) más vieja que la última edición del 
código fuente.

La librería NYS (en versión código fuente y precompilada) puede ser 
obtenida de:

<tscreen><verb>
    Servidor            Directorio                     Nombre fichero

    ftp.lysator.liu.se  /pub/NYS/libs                  nys-0.27.4.tar.gz
    ftp.lysator.liu.se  /pub/NYS/binaries/lib          libnsl.so.1.0.a26
 
    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/libs    nys-0.27.4.tar.gz
    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/lib     libnsl.so.1.0.a26
</verb></tscreen>

Versiones precompiladas de los programas "<tt/login/" y "<tt/su/" pueden ser 
obtenidos de:

<tscreen><verb>
    Servidor            Directorio                     Nombre fichero

    ftp.lysator.liu.se  /pub/NYS/binaries/bin          login
    ftp.lysator.liu.se  /pub/NYS/binaries/bin          su

    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/bin     login
    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/bin     su
</verb></tscreen>

Similarmente, se pueden obtener ejemplos de ficheros de cofiguración de:

<tscreen><verb>
    Servidor            Directorio                     Nombre fichero

    ftp.lysator.liu.se  /pub/NYS/binaries/etc          *conf
    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/etc     *conf
</verb></tscreen>

Para compilar la librería <tt/nsl/, sigue las instrucciones que vienen con el 
software. Si deseas compilar la librería DLL compartida debes tener las 
herramientas DLL instaladas en su sitio (<tt>/usr/dll</tt>). Las herramientas DLL 
(el paquete <tt/tools-2.11.tar.gz/ o posterior) pueden ser obtenidas de los 
servidores habituales.


<sect1>Configurar un Cliente NYS usando NYS

<p>
A diferencia del NIS tradicional, no se necesita ninguna configuración 
para un cliente NYS. Todo lo que se necesita, es que el fichero de 
configuración NIS (<tt>/etc/yp.conf</tt>) apunte al servidor correcto para su 
información. Además, el fichero de configuración del <it/Name Services Switch/ 
(<tt>/etc/nsswitch.conf</tt>) debe estar correctamente configurado.

Por favor, refieráse a los ejemplos proporcionados con el código fuente.


<sect1>El Fichero <tt/nsswitch.conf/

<p>
El fichero de <it/Network Services Switch/ <tt>/etc/nsswitch.conf</tt> 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 <tt>/etc/host.conf</tt> determina la 
manera en que se realizan las búsquedas de hosts. Insistimos, eche un 
vistazo al fichero proporcionado en la distribución del código fuente. Por 
ejemplo, la línea

<tscreen><verb>
    hosts: files nis dns
</verb></tscreen>

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


<sect1>Haz usar NYS a tus binarios<label id="hazusar">
 
<p>
En vez de reenlazar cada binario con la librería NYS (<tt/libnsl.so/), se ha 
conseguido una solución más limpia proporcionando al usuario la 
posibilidad de compilar una libc que incluya NYS. Esto significa que todo 
lo que necesitas hacer es recompilar una nueva libc y sustituir la 
<tt>/lib/libc.so.x.y.z</tt> existente para que todos los programas (los compilados 
no-estáticamente) utilicen NYS.

Esta combinación también te da la ventaja sobre la implementación del NIS 
tradicional en la libc de linux, en que permite soporte transparente para 
<it/shadow passwords/ (vía el fichero <tt>/etc/nisswitch.conf</tt>).
 
Sigue los sencillos pasos indicados más adelante para recompilar una libc que 
incluya NYS.

<itemize>
<item>Asegúrate de que tienes las últimas herramientas DLL instaladas. 
	Para más información acerca de dónde conseguirlas léete el GCC-FAQ.

<item>Consigue los últimos fuentes de la <tt/libc/. (de nuevo, mira el GCC-FAQ)

<item>Consigue los últimos fuentes del <tt/nys/ de:

      <tscreen><verb>
          ftp.lysator.liu.se:/pub/NYS/libs
      </verb></tscreen>

      y descomprímelos en el directorio de la libc-linux fuente.      
      Actualmente la distribución es la "<tt/nys-0.27.4.tar.gz/".

<item>Ejecuta el <tt>./configure</tt> y contesta "n" a la pregunta

      <tscreen><verb>
          Values correct (y/n) [y] ?
      </verb></tscreen>

      Luego sigue con las siguientes cuestiones y la última pregunta 
      ahora será
	 
      <tscreen><verb>
          Build a NYS libc from nys-0.27 (y default) ?
      </verb></tscreen>
 
      contesta "y" a ésta.

<item>Luego ejecuta el comando

      <tscreen><verb>
          % make
      </verb></tscreen>

</itemize>

La librería generada tras la compilación se llamará algo así como

<tscreen><verb>
    libc.so.4.5.26
</verb></tscreen>

y estará bajo el directorio <tt>jump/libc-nys</tt>. Para instalar esta librería 
nuestro consejo sería copiarla a <tt>/lib</tt> con un nombre lexicográficamente 
superior que el número que actualmente tiene. Simplemente con añadir la 
letra "a" lo podremos conseguir. Por ejemplo:

<tscreen><verb>
    % cp jump/libc-nys/libc.so.4.5.26 /lib/libc.so.4.5.26a
</verb></tscreen>

Alternativamente, podríamos añadirle "nys" para poder identificarlo 
rápidamente. Ahora ejecuta el siguiente comando

<tscreen><verb>
    % ldconfig
</verb></tscreen>

que reseteará tu caché para usar la nueva librería. La estrategia del 
enlazador dinámico puede ser examinada con el comando "<tt>ldconfig -p</tt>".

Básicamente esto es todo. Ahora todos tus programas deben poder utilizar 
NYS. Por favor, nota que usualmente el programa "<tt/login/" está 
compilado estáticamente y que por lo tanto no puede acceder a las nuevas 
funciones NYS de la nueva <tt/libc/. Deberás recompilar "<tt/login/" sin el parámetro 
<tt/-static/, o enlazarlo estáticamente a la librería <tt/libnsl.a/.


<sect>Configurar un Servidor NIS

<sect1>El Programa Servidor <tt/ypserv/

<p>
Este documento sólo describe cómo configurar el servidor NIS "<tt/ypserv/". La 
configuración del servidor "<tt/yps/" es similar _pero_ no exactamente igual 
así que ¡ten esto en cuenta si intentas aplicar estas instrucciones a "<tt/yps/"!
 
El software del Servidor NIS puede ser encontrado en:

<tscreen><verb>
    Servidor            Directorio                         Nombre fichero

    ftp.lysator.liu.se  /pub/NYS/servers                   ypserv-0.11.tar.gz
    ftp.funet.fi        /pub/OS/Linux/BETA/NYS/servers     ypserv-0.11.tar.gz
    mcsun.eu.net        /os/linux/BETA/NYS/servers         ypserv-0.11.tar.gz
    ftp.univie.ac.at    /unix/system/linux/funet/BETA/NYS/servers
                                                           ypserv-0.11.tar.gz
</verb></tscreen>

El setup del servidor es el mismo para NIS tradicional y para NYS.
 
Compila el software para generar los programas "<tt/ypserv/", "<tt/dbcat/" y 
"<tt/dbload/". Primeramente debes determinar qué ficheros necesitas que estén 
disponibles via NIS y después añade o elimina las entradas apropiadas de 
ypMakefile. Luego instala el fichero <tt>ypMakefile</tt> en 
<tt>/var/yp</tt> con el nombre <tt>Makefile</tt>.
 
Y ahora crea los ficheros DLL escribiendo:
 
<tscreen><verb>
    % cd /var/yp; make
</verb></tscreen>
 
Cerciórate de que el mapeador de puertos (<tt/rpc.portmap/) está en marcha, y 
arranca el servidor "<tt/ypserv/". El comando


<tscreen><verb>
    % rpcinfo -u localhost ypserv
</verb></tscreen>

debería dar una salida como

<tscreen><verb>
    program 100004 version 2 ready and waiting
</verb></tscreen>

Ya está, tu servidor ya está en marcha.


<sect1>El Programa <tt/yppasswdd/
 
<p>
Cada vez que los usuarios cambien sus passwords, la base de datos NIS y 
probablemente otras bases de datos que dependan de la base de datos NIS 
de los passwords deben ser actualizadas. El programa "<tt/yppasswdd/" es un 
servidor que maneja cambios de password y que se asegura de que la 
información NIS será actualizada acordemente. El software para 
"<tt/yppasswdd/" puede encontrarse en:

<tscreen><verb>
    Servidor                   Directorio                     Nombre fichero

    ftp.lysator.liu.se    /pub/NYS                        yppasswdd-0.5.tar.gz
    ftp.funet.fi          /pub/OS/Linux/BETA/NYS/servers  yppasswdd-0.5.tar.gz
</verb></tscreen>

Una vez obtenido el software, sigue las instrucciones que vienen con él.


<sect>Verificar la Instalación NIS/NYS

<p>

Si todo es correcto (como debería serlo), deberías poder verificar tu 
instalación con unos pocos comandos. Asumiendo, por ejemplo, que tu 
fichero <tt/passwd/ está siendo soportado por NIS, el comando

<tscreen><verb>
    % ypcat passwd
</verb></tscreen>

debería devolverte los contenidos de tu fichero NIS passwd. El comando

<tscreen><verb>
    % ypmatch userid passwd
</verb></tscreen>

(donde <tt/userid/ es el nombre de login de un usuario arbitrario) debería 
devolver la entrada correspondiente a ese usuario en el fichero NIS 
passwd. Los programas "<tt/ypcat/" e "<tt/ypmatch/" deberían venir incluidos con tu 
distribución de NIS tradicional o de NYS.


<sect>Problemas Comunes y soluciones con NIS

<p>
Aquí van algunos problemas comunes según los informes de varios usuarios:

<enum>
<item>La versión 4.5.19 de libc no funciona. NIS no funcionará con ellas.

<item>Si actualizas las librerías de 4.5.19 a 4.5.24, el comando <tt/su/ dejará 
       de funcionar. Necesitas obtener el comando su de la distribución 
       1.2.0 de Slackware. También de ahí podrás obtener las librerías 
       actualizadas.

<item>Puedes encontrar problemas con NIS y DNS en la misma máquina.
       Mi servidor DNS a veces pasa del NIS. Todavía no he averiguado por 
       qué. 

<item>Cuando un servidor NIS se cae y vuelve a levantarse <tt/ypbind/ arranca 
       con mensajes como:

	<verb>
         yp_match: clnt_call:
                     RPC: Unable to receive; errno = Connection refused
	</verb>

       y los logins de aquellos que están registrados en la base de datos 
       NIS son rechazados. Intenta entrar como root y si lo consigues, 
       mata el <tt/ypbind/ y arráncalo de nuevo.  
</enum>


<sect>Preguntas Realizadas Frecuentemente

<p>

La mayoría de tus preguntas ya deberían estar contestadas. Si todavía 
tienes alguna pregunta sin contestar tal vez quieras enviar un mensaje a

<tscreen><verb>
    comp.os.linux.help
</verb></tscreen>

o contactar con uno de los autores de este HOWTO.

<sect>Anexo: El INSFLUG <label id="Grupos">
<p>

El <em/INSFLUG/ forma parte del grupo internacional 
<it/Linux Documentation Project/, 
encargándose de las traducciones al castellano de los Howtos (Comos),
así como la producción de documentos originales en aquellos casos
en los que no existe análogo en inglés.

En el <bf/INSFLUG/ se orienta preferentemente a la traducción de documentos
breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de
<bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc.

Diríjase a la sede del INSFLUG para más información al respecto.

En la sede del INSFLUG encontrará siempre las <bf/últimas/ versiones 
de las traducciones:  <tt><htmlurl url="www.insflug.org" 
name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última versión 
disponible en el Insflug antes de bajar un documento de un servidor réplica.

Se proporciona también una lista de los servidores
réplica (<it/mirror/) del Insflug más cercanos a Vd.,  
e información relativa a otros recursos en castellano.

Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org"
name="pacopepe@insflug.org"></tt>.

</article>
