Windows como cliente NFS
Enviado por miguelcarmona :: 20 de octubre de 2008
Si por determinadas circunstancias necesitamos agregar equipos windows a una red NFS, este pequeño «HOWTO» puede sernos de gran utilidad.
Hay que tener en cuenta que tiene varios inconvenientes, y si queremos una red de equipos con distintos sistemas operativos, recomiendo encarecidamente utilizar el maravilloso samba. Al final del artículo explico algunos problemas con los que me topé y por lo que no lo recomiendo.
Descargamos el software Servicios de Windows para UNIX 3.5 desde http://www.microsoft.com/downloads/details.aspx?familyid=896C9688-601B-44F1-81A4-02878FF11778&displaylang=en
Si tenemos Windows Xp Home, el software no funcionará para esta versión. En esta dirección http://oreilly.com/pub/h/2883 explican como corregirlo.
Extraemos los archivos (en una ruta que recordemos, por ejemplo c:UNIX_services).
Lanzamos el asistente de instalación, aceptamos la licencia y elejimos «Custom Instalation»
Desactivamos todas las entradas excepto «Client for NFS» y «Authentication tools for NFS»
Continuamos, finalizamos y reiniciamos el equipo
En cualquier explorador de windows, elejimos Herramientas -> Conectar a unidad de red. Elejimos letra de unidad y en carpeta, introducimos los datos de acceso con la siguiente estructura:
servidor:/ruta_al/recurso_compartido/
Finalizamos y nos saldrá una confirmación con el usuario por el cual se está conectando al servidor nfs. Si es correcto, aceptamos y todo perfecto. Si no es correcto el usuario (el caso más normal) y aceptamos, seguramente se monte correctamente, pero tengamos acceso de sólo lectura.
Para que el sistema monte automáticamente con los permisos correctamente, he creado una macro (.bat) que hace el montaje desde consola. Necesitamos el servidor PCNFSD funcionando en el equipo que contiene el servidor NFS (por comodidad, pero nos vale cualquier otro equipo), y ya que es para varios equipos windows, decidí instalar el demonio en el servidor nfs y que todos los clientes atacasen al mismo. Si prefieres dejarlo independiente en cada equipo windows, ya lo tienes instalado con la configuración anterior y sólo tienes que añadirle datos (se encuentra en «Services for UNIX Administration» situado en Inicio -> Todos los programas -> Windows Services for UNIX -> Services for UNIX Administration.
Para esta configuración, no hacen falta ya los archivos passwd y group, ni el mapeo de usuarios.
En openSuse el paquete que contiene el demonio PCNFSD se llama linux_pcnfsd2 y lo podemos instalar con un simple zypper install linux_pcnfsd2 (como root, claro está). A continuación, si tenemos cortafuegos, debemos abrir el puerto 1024 udp.
En los clientes windows, he creado el archivo NFSClient.bat en «C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio» con el siguiente contenido
mount -o rsize=32 -o wsize=32 -o timeout=0.8 -o fileaccess=755 -o pcnfs=server.intranet.miguelcarmona.com -u:user1 -p:contraseña_user1 server.local:/media/documents k:
donde server.intranet.miguelcarmona.com es el equipo que tiene funcionando el servidor NFS y PCNFSD, user1 es el usuario y contraseña_user1 es la contraseña correspondiente. Con un mount /? se pueden obtener la lista completa de comandos (en una consola del equipo windows).
Debemos lanzar también el comando (en los clientes windows)
net use /pers:no
ya que de lo contrario, nos arrojará un error windows y no podrá montarlo. Esto sólo es necesario hacerlo una vez.
Ya tenemos funcionando el cliente con los permisos correspondientes, aunque la seguridad se vea bastante afectada ya que cualquier usuario podría editar el archivo y ver la contraseña del usuario, aunque podemos dejar sin especificarla y cada vez que inicie el equipo, preguntará por la misma.
Services for UNIX Administration tambien incluye una utilidad para sincronizar las contraseñas del usuario de windows con el servidor UNIX para así facilitar el mantenimiento, pero suele ser más recomendable utilizar un sistema de gestión centralizado de recursos como NIS o LDAP y autentificar los equipos de la red contra el mismo.
Importante:
Uno de los peores problemas con los que me he topado es el de la codificación.
Normalmente, prácticamente todos los GNU/Linux / UNIXes tratan la codificación de caracteres en el estándar UTF8, pero en cambio, Windows utiliza iso-8859-1 normalmente por lo que tenemos un problema al utilizar caracteres no ACSI en los nombre de archivos y directorios.
Tas muchas búsquedas y preguntas, no he encontrado solución alguna para esto, y Microsoft sólo recomienda el uso de esta herramienta para realizar una migración de datos desde servidores UNIXes a la plataforma Windows.
Si simplemente lo vamos a utilizar como servidor para equipos Windows, no hay mucho problema, ya que aunque no aparezcan bien codificados en el servidor, si lo estarán en los clientes. Pero claro, hay que tener en cuenta que realizamos bakups en dicho servidor, si restauramos alguno de los bakups en un equipo en Windows, no tendremos bien la codificación. Además, vuelvo a reincidir en que para este caso deberíamos utilizar samba, ya que sí que realiza dicha conversión (aparte de que tiene autentificación nativa entre otras muchísimas ventajas).
Si se nos da el caso de que utilicemos dicha solución (windows como cliente de servidor NFS) y posteriormente decidimos migrar a samba o necesitamos que nuestros archivos estén correctamente codificados en el servidor, podemos utilizar el siguiente comando:
convmv -r -f cp850 -t utf8 --notest --replace /ruta/donde/hay/que/reparar/
Lógicamente, deberemos tener instalada la aplicación convmv.
Aunque debería funcionar correctamente esta solución, tuve bastantes problemas, por lo que al final opté por levantar un servidor samba en el mismo equipo y desde un equipo Windows, copiar todo el contenido compartido por NFS a la carpeta compartida por SAMBA (deben ser rutas distintas, claro está).
Referencias:
http://support.microsoft.com/kb/324055
http://support.microsoft.com/kb/324073/
http://support.microsoft.com/kb/324085/es
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/prork/prci_unx_qnhb.mspx?mfr=true
http://ubuntuforums.org/showthread.php?t=310168