Está en: » Blog »

Windows como cliente NFS

Windows como cliente NFS

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”

Servicios de Windows para UNIX - inicio asistente instalación

Servicios de Windows para UNIX - inicio asistente instalación

Desactivamos todas las entradas excepto “Client for NFS” y “Authentication tools for NFS”

Servicios de Windows para UNIX - opciones instalación

Servicios de Windows para UNIX - opciones instalación

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/

Servicios de Windows para UNIX - Montar recurso

Servicios de Windows para UNIX - Montar recurso

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 SettingsAll UsersMenú InicioProgramasInicio” con el siguiente contenido

mount -o rsize=32 -o wsize=32 -o timeout=0.8 -o fileaccess=755 -o pcnfs=server.intranet.miguelcarmona.name -u:user1 -p:contraseña_user1 server.fsk:/media/documents k:

donde server.intranet.miguelcarmona.name 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

Discussion

  1. Edward dice:

    Buenas noches Miguel Carmona:
    El motivo de la presente es para felicitarlo por tan magnifico sitio que tiene y la forma de como explica las cuestiones que nosotros los usuarios que estamos aprendiendo el magnifico mundo de Linux sea mas comprendido, muchas gracias y espero que siga asi. EL motivo tambien ademas de felicitarlo es para preguntarle hacerca de como se puede configurar un servicio nfs en donde windows server 2008 sea el servidor y ubuntu hardy v4.01 sea el cliente espero recibir de ante mano su respuesta y agredeciendole una vez mas por la ayuda que nos brinda.

  2. Gracias a los usuarios que me visitais.
    ¿servidor nfs en windows 2008?
    Me gustaría preguntale el porqué necesita utilizar nfs en windows 2008. Este sistema ya incorpora un servidor de archivos (samba) así que básicamente, sólo tendría que compartirlo y posteriormente montarlo en el equipo ubuntu (ya que incorpora el cliente smb).
    En esta entrada explico como hacer el montaje
    http://miguelcarmona.name/blog/montar-recursos-samba-en-gnulinux

  3. Miguel dice:

    Buenas Miguel, a ver si me puedes echar una mano, que yo ya no se por donde meterle mano a mi problema. Tengo un servidor con linux en el cual tengo corriendo un samba. Tengo una segunda maquina con windows, que se conecta a la primera a traves de este samba, concretamente se conecta en la unidad Z:. En esta segunda maquina, ademas hay corriendo un servidor con ssh. Con una tercera maquina(indistantemente del sistema operativo, aunque en mi caso es un linux), me conecto a la segunda(maquina windows xp) a traves de ssh. Al intentar acceder a cualquier unidad de windows, me accede correctamente. Sin embargo, cuando intento acceder a la unidad Z:(que es la que esta conectada al samba de la maquina linux), me dice que no puedo acceder, Error de sistema 5, acceso denegado. Lo mismo me ocurre utilizando el sistema de ficheros nfs, pero en este caso el error que me tira es que el “sistema no puede hallar el controlador especificado”. Me podrías dar alguna pista de como arreglar esto, la configuración que necesitaría en el samba, o en el ssh? Muchas gracias, y un saludo

  4. Estimado Miguel:

    Siento la espera en la respuesta, pero me ha sido imposible realizarla con anterioridad. Decirle que no se me ha dado ese caso pero que podría intentar recrearlo, pero para ello, necesitaría que me indicase que servidor ssh ha instalado (seguramente Cygwin).

    Si por el contrario ya ha solucionado el problema, le invito a que comente dicha solución ya que sería de buen provecho para aquellos que estén en alguna situación del estilo.

    Un saludo

  5. zitonguito dice:

    Hola

    Felicitaciones po tu tutorial, hace un año lo use para un sevidor que estaba haciendo en redhat, y me impresiono tu explicacion y gracias a esta pude montar el cliente de NFS en windows, (jajaj el profe no sabia ni como lo habia hecho) una vez mas me encuentro tu articulo y no quise dejar pasar la oportunidad de felicitarte por el mismo (disculparas que no lo haya hecho hace un año pero tenia exajerada carga de trabajo). Una vez mas gracias por tu aporte a la comunidad.

    Saludos

  6. No hacen falta las disculpas, ni mucho menos.
    Es una gran satisfacción para mí el que sea de utilidad el poco material que voy compartiendo (poco, ya que no tengo mucho tiempo para realizar estos artículos).

    Gracias por su agradecimiento.

  7. sslag dice:

    Gracias por el artículo. Es una gozada ver algo tan bien explicado. De nuevo gracias por tu tiempo.
    Uso todo esto de NFS con servidores y clientes linux; y también el montaje de carpetas en red desde consola (net use) entre windows. Pero ahora se me ha dado la necesidad de usar NFS para exportar hacia clientes windows. La finalidad es que varias personas (windows), compartan sólo entre ellos una serie de ficheros ofimáticos, y trabajen entre ellos, modificándolos y demás.

    Así que tengo unas dudas iniciales:
    - Me queda claro por el artículo, que samba da más garantía de no encontrar problemas futuros, pero dicen que samba logra menor velocidad de transferencia. Pero para archivos de oficina, no creo que influya mucho. Me centro en samba mejor?
    - Por otro lado, me preocupa el tema de los permisos. Los usuarios no han tratado jamás con permisos, y supongo que tras editar el fichero en red (y dependiendo del programa usado), los permisos y propietarios variarán y pueda dar problemas.

    Saludos, y gracias de nuevo

  8. Es cierto que samba es más lento que nfs, pero para el caso que comentas, lo recomiendo encarecidamente.
    Respecto al tema de permisos, samba está mejor integrado respecto a clientes windows. En verdad tiene tanto juego con los permisos que es una gran alternativa. Incluso, puedes forzar a que cualquier usuario que escriba cambios en una carpeta compartida, estos cambios siempre se realicen con el mismo usuario en el servidor, por lo que cualquier usuario podrá leer/escribir sin problemas de permisos.

  9. sslag dice:

    Perfecto!! Me centraré en samba pues.
    Gracias

  10. Ruben dice:

    Hola, sólo comentar que por desgracia el driver no soporta Windows 2003 64 bits :(

    La única opción que creo, existe, es de pago.

    saludos :)

Deje su comentario

Previsualización de comentario
  1. Anónimo dice:





Pings para esta entrada