Montando unidades compartidas de Windows en Linux

08/05/2006

Samba LogoLa red que hay montada en mi lugar de trabajo es una red Windows. Actualmente estoy intentando utilizar lo más posible la distributción Ubuntu que tengo instalada para realizar mi trabajo diario. Una de las necesidades que me surgen es el acceso a unidades compartidas de red de otros equipos Windows.

Aunque el administrador de archivos Nautilus que tiene el Gnome me permite navegar por unidades compartidad de Windows, muchas de las aplicaciones existentes no “entienden” el protocolo “smb” y por tanto no pueden acceder a los archivos que se encuentran en dichas unidades.

Para solucionar este inconveniente, lo mejor es “montar” las unidades compartidas en nuestro arbol de directorio para que todas las aplicaciones vean las unidades como si de un directorio más se tratasen.

Antes de nada, lo primero que necesitamos es añadir el soporte para samba (así se conoce el sistema de compartición de carpetas de Windows) a nuestro GNU/Linux. En Ubuntu, basta con instalar los paquetes “smbfs”, “samba”, “samba-common” y “smbclient”.

A continuación crearemos la carpeta en la que “montaremos” la unidad compartida:

$ sudo mkdir /mnt/compartida

Una vez que nuestro sistema tiene instalado todo lo necesario, ya “entenderá” el protocolo de Samba y podemos “montar” la unidad compartida con el comando:

$ sudo mount -t smbfs -o username='usuario',password='clave',workgroup=grupowin //equipowin/compartida /mnt/compartida

Con lo que conseguimos que la carpeta compartida “compartida” del equipo “equipo.red” esté accesible en el directorio “/mnt/compartida” de nuestro equipo, como si de un directorio local se tratase.

Si lo deseamos, también podemos editar el fichero “/etc/fstab” para añadir una línea que defina cómo se montará esta unidad de red. Antes de ello hacemos una copia de seguridad por si acaso mediante la orden:

$ sudo cp /etc/fstab /etc/fstab_backup

Y después lo editamos mediante:

$ sudo gedit /etc/fstab

Añade lo siguiente al final del fichero:

//equipowin/compartida /mnt/compartida smbfs username=usuario,password=clave,workgroup=grupowin,user,owner,noauto 0 0

Tendrás que personalizar esta línea para cambiar:

  • equipowin por el nombre de la máquina Windows a la que te estás conectando
  • compartida por el nombre de la carpeta compartida
  • /mnt/compartida por el nombre del directorio donde lo quieras montar
  • la ip de la máquina Windows a la que te conectas
  • username, poner el del usuario en Windows
  • password, poner la clave del usuario en Windows
  • grupowin por el nombre del grupo de trabajo o dominio en Windows

Sólo hace falta ejecutar:

$ sudo chmod +s /usr/bin/smbmnt

para hacer que un usuario “normal” pueda montar la unidad.

Ahora abre tu equipo mediante Lugares -> Equipo y verás un nuevo icono representando a la carpeta compartida. Mediante un doble clic en ella, se montará la unidad. También puedes montarla con la orden:

$ mount /mnt/compartida

Para desmontarla, hay que ser root, por lo que no puedes desmontarla más que ejecutando:

$ sudo umount /mnt/compartida

Opcones más comunes de mount
La cuarta columna del fichero fstab lista todas las opciones de montaje para el dispositivo o partición. Hay muchas opciones disponibles, pero estas son las más comunes:

  • credentials: Permite tener el usuario y contraseña en un fichero en vez de proporcionarlo como parámetro en el comando. El contenido del fichero será similar a esto:

    username=usuariowindows
    password=passwordwindows

    Y generalmente se le asignará permiso de escritura y lectura solamente para el propietario (chmod 600)

  • auto y noauto: Con auto (opción por defecto) el dispositivo se montará automaticamente.
  • user y nouser: La opción user permite que usuarios normales monten el dispositivo mientras que nouser (valor por defecto) solamente lo permite para root.
  • exec y noexec: exec (valor por defecto) permite ejecutar binarios de la partición, mientras que noexec no lo permite.
  • ro y rw: ro monta el sistema de archivos en modo solo lectura mientras que rw (valor por defecto) lo monta en modo lectura/escritura.
  • sync y async: Indica cómo se realizará la entrada y salida del sistema de archivos. sync significa que se hará de forma síncrona (al ejecutar un comando, se escribe físicamente en el dispositivo el resultado) mientras que con async (valor por defecto) se realiza asíncronamente (el sistema de archivos se sincroniza antes de desmontar la unidad).
  • defaults: Utiliza las opciones por defecto que son rw, suid, dev, exec, auto, nouser, y async.

Opciones de smbmount

  • username=<arg>: nombre de usuario SMB
  • password=<arg>: contraseña SMB
  • netbiosname=<arg>: nombre NetBIOS origen
  • uid=<arg>: usuario que será propietario de la unidad montada
  • gid=<arg>: grupo que será propietario de la unidad montada
  • port=<arg>: número puerto remoto SMB
  • fmask=<arg>: máscara de permisos asignados a los ficheros de la unidad montada
  • dmask=<arg>: máscara de permisos asignados a los directorios de la unidad montada
  • debug=<arg>: nivel de depuraciñon
  • ip=<arg>: nombre host o dir. IP destino
  • workgroup=<arg>: dominio/grupo NetBios destino
  • sockopt=<arg>: opciones socket TCP
  • scope=<arg>: NetBIOS scope
  • guest: invitado, sin contraseña
  • ro: montar solo-lectura
  • rw: montar lectura-escritura

Solución de problemas

Problema:Al montar una unida con:

$ sudo mount -t smbfs -o username=user,password=pass //IP/recurso /mnt/tmp

Nos monta la unidad pero nos dice esto:

20389: session request to IP failed (Called name not present)
20389: session request to 192 failed (Called name not present)

esto se soluciona buscando el nombre NetBios de la máquina a la que se le requiere el servicio:

nmblookup -A IP

por ejemplo:

nmblookup -A 192.168.78.1

y una vez obtenido (si lo sabemos de memorio no hace falta, claro), procedemos al montaje de la unidad mediante:

$ sudo mount -t smbfs -o username=user,password=pass //NOMBRE_NETBIOS/recurso /mnt/tmp

Hecho esto no nos debe a aparecer ninguna alerta al respecto.

Algunos enlaces de interés

Cómo conocer las conexiones actuales a un servidor Samba?
Cómo montar carpetas compartidas en red de Windows desde Ubuntu Linux
Samba vs. Windows (Called name not present)
Fat32 en Linux

6 Responses to “Montando unidades compartidas de Windows en Linux”

  1. Jose Says:

    He montado un volumen usando fstab, con la opción user. Luego he seguido el resto de instrucciones, pero solo puedo montarla como root. Después, sólo root puede usar el volumen.😦

  2. rubensa Says:

    Hola Jose

    Imagino que tu problema esté en que el usuario con el que estás intentando montar la unidad, no tiene permisos para escribir en el directorio en el que deseas realizar el montaje.

    En el ejemplo, para poder ejecutar:

    $ mount /mnt/compartida

    como un usuario normal, dicho usuario debe tener permiso de escritura sobre la carpeta /mnt/compartida (ademas de pertenecer al grupo indicado por gid si se utiliza dicha opción).

  3. Juan Carlos Says:

    Hola he querido montar una unidad desde un windows y hago todos los pasos pero me pide un passwd que passwdor tiene q ser si cuando lo estoy montando coloco el pass que me pide

    saludos


  4. Excelente! lo hize y me funcionó, claro tuve que poner permisos a mi carpeta chgrp y chown.
    Ya puedo ejecutar aplicaciones ms-dos de 16 bits con el DOSBOX
    Gracias,

  5. adilson Says:

    muy Bueno, seria genial un tutorial con controladora Dominio PDC

  6. Rubén Vilar Says:

    Funcionando a la perfección gracias a tu ayuda !

    Gracias!


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: