13.8. Utilizando los Mapas passwd y group

Una de las aplicaciones más importantes de NIS es sincronizar la información del usuario y de su cuenta en todos los nodos de un dominio NIS. Por consiguiente, normalmente usted sólo mantendrá un fichero /etc/passwd pequeño, al cual se añade la información global de los mapas NIS. Sin embargo, no es suficiente con habilitar las búsquedas NIS para este servicio en el fichero nsswitch.conf.

Antes de fiarse de la información de contraseñas distribuida por NIS, debe asegurarse de que todos los números ID de usuario que haya en el fichero local passwd concuerdan con los del servidor NIS. La consistencia de los IDs también es importante para otros propósitos, como montar particiones NFS desde otros nodos de su red.

Si alguno de los IDs numéricos de /etc/passwd o group difiere de los de los mapas, debe ajustar el dueño de todos los ficheros que pertenezcan a ese usuario. Primero, debe cambiar todos los uids y gids de passwd y group a los nuevos valores, luego mirar que todos los ficheros que pertenecen a los usuarios han cambiado, y cambiar su dueño. Suponga que news tenía un ID de usuario de 9 y que okir tenía un ID de usuario de 103, y que fueron cambiados a otro valor; luego puede ejecutar las siguientes órdenes como root:
    # find / -uid   9 -print >/tmp/uid.9
    # find / -uid 103 -print >/tmp/uid.103
    # cat /tmp/uid.9   | xargs chown news
    # cat /tmp/uid.103 | xargs chown okir

Es importante que ejecute estas ordenes con el nuevo fichero passwd instalado, y que reúna todos los ficheros antes de cambiar el dueño de alguno de ellos. Para actualizar los grupos dueños de los ficheros, utilice un método similar con gid en vez de uid y chgrp en vez de chown.

Una vez que haya hecho esto, los uids y gids de su sistema concordarán con los de todos los nodos de su dominio NIS. El siguiente paso será añadir a nsswitch.conf las líneas de configuración que habilitan la búsqueda NIS de la información de usuario y grupo:
    # /etc/nsswitch.conf - tratamiento de passwd y group
    passwd: nis files
    group:  nis files

Esto afecta a qué lugar buscarán la información de usuario la orden login y todos sus amigos. Cuando un usuario intente registrarse en el sistema, login consultará primero los mapas NIS, y si esta búsqueda falla, recurrirá a los ficheros locales. Normalmente, usted eliminará a casi todos los usuarios de sus ficheros locales, y sólo dejará las entradas de root y otras cuentas genéricas como mail. Eso es porque algunas tareas vitales del sistema pueden requerir resolver uids a partir de nombres de usuario o viceversa. Por ejemplo, los trabajos administrativos de cron pueden utilizar la orden su para convertirse temporalmente en el usuario news, o el subsistema UUCP puede tener que enviar un informe de estado por correo. Si news y uucp no tienen entradas en el fichero local passwd, estos trabajos fallarán estrepitosamente durante una caída del servicio NIS.

Finalmente, si usted está usando la implementación de NIS antigua (soportada por el modo compat para los ficheros passwd y group en las implementaciones de NYS o glibc), debe insertar las pesadas entradas especiales dentro de ellos. Estas entradas determinan dónde se insertarán los registros derivados NIS dentro de la base de datos. Las entradas pueden añadirse en cualquier lugar, pero normalmente se añaden al final. Las entradas que hay que añadir en el fichero /etc/passwd son:
    +::::::
y las del fichero /etc/groups:
    +:::

Con la glibc 2.x y NYS se puede ignorar los parámetros del registro de un usuario recibido desde el servidor NIS creando entradas con un “+” antes del nombre de ingreso, y excluir usuarios específicos creando entradas con un “-” antes del nombre de ingreso. Por ejemplo, las entradas:
    +stuart::::::/bin/jacl
    -jedd::::::
ignorarían el intérprete de órdenes proporcionado por el servidor NIS para el usuario stuart, y no permitirían al usuario jedd ingresar en esta máquina. En los campos que se dejan vacíos se utiliza la información proporcionada por el servidor NIS.

Existen dos inconvenientes aquí. Primero, la configuración descrita arriba sólo funciona en los sistemas de ingreso que no utilizan contraseñas ocultas (shadow passwords). Los misterios de usar contraseñas ocultas con NIS se discutirán en la siguiente sección. Segundo, las órdenes de ingreso no son las únicos que acceden al fichero passwd—fíjese en la orden ls, que casi todo el mundo utiliza constantemente. Al hacer listados largos, el comando ls muestra los nombres simbólicos de los usuarios y los grupos dueños de un archivo; esto es, para cada uid y gid que se encuentra, tiene que consultar al servidor NIS. Una consulta NIS tarda algo más que la búsqueda equivalente en un fichero local. Puede encontrarse con que al compartir la información de passwd y group mediante NIS se produce una reducción significativa del rendimiento de algunos programas que utilizan esta información de manera frecuente.

Y esto no es toda la historia. Imagine qué ocurriría si una usuaria quiere cambiar su contraseña. Normalmente invocará la orden passwd, que lee la nueva contraseña y actualiza el fichero local passwd. Esto es imposible con NIS, ya que ese fichero ya no está disponible localmente, pero hacer que los usuarios tengan que ingresar en el servidor NIS cada vez que quieran cambiar su contraseña tampoco es una opción. Es por esto que NIS proporciona un sustituto para passwd llamado ypasswd, que maneja los cambios de contraseña bajo NIS. Para cambiar la contraseña en el nodo servidor, contacta con el demonio yppasswdd de ese nodo mediante RPC, y le proporciona la información de la contraseña actualizada. Normalmente se instala yppasswd sobre el programa normal haciendo algo así:
    # cd /bin
    # mv passwd passwd.old
    # ln yppasswd passwd

Al mismo tiempo, debe instalar rpc.yppasswdd en el servidor y lanzarlo desde un script de red. Esto ocultará de manera efectiva las viscisitudes de NIS a sus usuarios.