Está en: » Artículos »

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 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

Comentarios

  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
    https://miguelcarmona.com/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 🙂

  11. Angel dice:

    Esta genial la ayuda, pero aplican estos pasos para windows server 2008 64 Bits, revisando en el 2008 habilite nfs, pude montar una carpeta de linux en el windows pero los pemrmisos no me los repeta, e leido que debo tener un mapping server pero en el WIndows server 2008, esa opcion se quito, como pueedes darme algun consejo o pista de como hacerlo. Me dicen que no se puede pero al ver tus ejemplos para xp y server 2003 no veo por que no en el 2008

  12. Morgan_Jr dice:

    Hola Miguel, te felicito por el tutorial,me gustaria saber si los pasos son validos en un windows 2003 r2 hacia una AIX ibm, he investigado y creo que es una NFS es una forma sencilla de conectar mi 2003 que funcionaria como cliente del AIX que va a ser mi servidor storage.
    Te agradezco de antemano la ayuda

  13. Veamos, para aquellos que tienen problemas con los permisos, codificación y demás, indicarles encarecidamente que utilicen samba.

    Con samba tenemos una gran integración con protocolos oficiales de sistemas operativos windows. por lo que no hay motivo para no utilizarlo.
    La ventaja que presenta nfs sobre samba básicamente es para escenarios aquellos escenarios donde no es posible utilizar samba o necesitamos una velocidad de transferencia mayor y no nos importa sacrificar permisos de usuario así como ls coficicación y algunos otros problemas que se encontrarán por el camino.

    Espero haber sido conciso y claro…

  14. maria campoy dice:

    HOLA!! 1º felicitarte por la informacion y segundo a ver si me puedes ayudar pues tengo varias dudas.
    yo tengo mi servidor nfs en ubuntu y mi cliente en windows xp, cuando hago un mount -o \servidorrecurso * me dice que se ha realizado correctamente pero no puedo ver el recurso por ningun lado! llevo como una semana dando vueltas buscando infomacion pero no lo consigo. Alguien podria ayudarme???? Gracias!!!

  15. @maria tienes que tener algún tipo de problema. Recuerdo que me pasó algo parecido y fue por la autentificación con pcnfs.
    Vuelve a seguir el manual ya que seguramente tengas algún problema.

    Suerte…

  16. maria campoy dice:

    Gracias Miguel!!! y perdona las molestias.
    es necesario usar pcnfs??(en un principio no queria autentificacion) lo tengo que instalar el el servidor nfs ubuntu?? es que busco el paquete que tu indicas y no lo encuentra(en ubuntu)por lo que no puedo instalarlo. tampoco sé si tengo que configurar algo de pcnfs en windows…
    Mil gracias por tu ayuda.de verdad!! no he visto un post mejor explicado que éste, me encanta! un saludo.

  17. Sergio dice:

    No consigo realizar la configuración, Window XP Profesional con SP3 me lanza este error: BAD_POOL_HEADER…
    Por suerte he encontrado esta herramienta, es de pago pero tiene una versión de evaluación. El software se llama nfsAxe.
    El linux todo esto es mucho más fácil….voy a probar con Ubuntu.
    Saludos.

  18. Greg dice:

    Estupenda tu ayuda. Acabo de instalar Unix 3.5 y no tuve problemas para poder mapear en un windows 2003 server una carpeta compartida en Unix. Sólo tengo una consulta a ver si me puedes ayudar. Al usuario de windows le he dado todo los permisos. Puede leer, ecribir y borrar archivos desde windows pero este mismo no puede borrar los archivos grabados en el directorio desde Unix (si los puede leer e incluso modificar). He intentado dar al archivo que genero desde unix todos los permisos posibles pero no consigo que desde Windows se pueda borrar. Lo necesito pues desde mis puntos de venta genero unos archivos para factura electrónica y la aplicación desde windows los lee y una vez procesados los tiene que leer.
    Ojalá me puedas ayudar con algunos de trucos de experto. Un Cordial Saludo y Muchas Gracias de Antemano por la ayuda.

  19. Karlo dice:

    Hola Miguel, fijate que segui los pasos que mencionas y todo funciono bien, lo malo es que me deja los directorios mapeados como de solo lectura.

    Mencionas algun archivo .bat pero no se logra ver en tu blog (solo se ve una barra de desplazamiento).

    Podrias explicar de nuevo acerca de este archivo .map?

    Te agradesco y saludos!

  20. @Karlo Justo después de las capturas expongo que sólo se monta con permisos de lectura y cómo solucionarlo haciendo el archivo .bat correspondiente.

  21. ftapia dice:

    Buenas tardes.. mi pregunta es para retificar y me den sus comentarios

    pretendo es poner un PC como servidor NFS con WINXP PROFESIONAL para compartir documento Ofimaticos..
    con los demas equipos tambien con WInXP Profesional en red..

    mi duda es si la PC debe llevar WINSERVER o hasi funciona..

    las PCS crientes les tengo que configurar de que modo o como acceso al PC-SERVIDOR..?… estos equipos no dbene tener mas accesos que los que yo le permita, desde solo lectura de documento.. hasta deque no deben andar viendo o meteindose a otras carpetas.

    por favor les agardecer sus comentario
    y dentameno muchas gracias por apoyar

    • Para lo que buscas no es recomendable nfs (de hecho no sé si hay algún servidor para windows o cómo iría).
      Si el servidor va en Windows, sólo tienes que configurar la compartición de archivos y si es en linux, instala samba (hay una entrada para instalarlo en el blog).

      Saludos…

  22. Koko dice:

    Lo que comentas del encoding me paso a mi tambien en ambientes Windows-Linux, la manera en la que corregí este problema fue cambiando el valor de la variable LANG en Linux que se encuentra en el archivo /etc/sysconfig/i18n.
    Espero te sea de utilidad esta información

    • Correcto, buen apunte y gracias por compartirlo.
      El problema que tiene esta medida (y por lo que no la comenté) es que te encuentras con bastante software y scripts que da por hecho que funcionas en UTF-8.
      Si sólo vas a utilizar dicha máquina como servidor nfs, sería una buena opción pero si se pretende ofrecer más servicios, pueden presentarse problemas.

      Creo recordar que desde Yast lo podemos cambiar también en el apartado Idioma.

      Saludos…

Deje su comentario

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





Pings para esta entrada

  1. […] Services for Unix para dar soporte a este protocolo desde las máquinas con windows (aquí tenéis un tutorial de instalación en […]

  2. […] decir de esos supuestos firewall que traen algunos? No creo que el cortafuegos que incorpora Windows XP sea tan deprimente (no puedo asegurarlo ya que no utilizo la plataforma Windows -bueno, sólo […]