Compartir ficheros con Samba/CIFS

networking

Esta receta explica cómo utilizar SAMBA para servir ficheros y cómo acceder a ellos desde otro ordenador. Supondremos que en ambos equipos tienes Debian o sucedáneos.

Introducción

Samba es una implementación libre del protocolo SMB/CIFS. Normalmente se utiliza como medio para interoperar con recursos (ficheros e impresoras) compartidos por máquinas Microsoft y también como servidor de dominio sin los problemas de seguridad y coste típicos de los sistemas Windows.

Sin embargo, Samba puede ser una buena solución como servidor de ficheros entre sistemas operativos libres, ya que ofrece más seguridad que otras alternativas como puede ser NFS, aunque menor rendimiento.

Por otro lado, se desaconseja utilizar Samba para publicar impresoras en favor de CUPS, que es un sistema mucho más especializado y versátil, incluso cuando se requiere interoperar con Windows.

Ingredientes

  • samba
  • smbfs

Para integrar samba en nautilus

  • libgnomevfs2-extra

Instalando

Lo habitual:

# apt-get install samba

La instalación te hará varias preguntas:

  • Workgroup/Domain Name: al estilo de Window$. Puedes poner lo que quieras pero recuerda que debería ser conocido por los clientes del mismo grupo.
  • Encrypted passwords: Sí
  • WINS from DHCP: No
  • Samba server: daemons
  • Create Samba password DB: Sí

Usuarios

Para habilitar un usuario para usar un directorio compartido con Samba dicho usuario ya debe existir y tener una cuenta shell. Lo puedes activar con:

# smbpasswd -a usuario

Compartir recursos

La manera más fácil es editar el fichero /etc/samba/smb.conf y añadir (al final) un bloque con esta pinta:

[downloads]              # nombre del recurso
   path = /opt/files     # directorio compartido
   writable = yes        # el usuario puede borrar y crear ficheros remotamente
   public = no           # se requiere clave para acceder 
   browseable = yes      # aparece en el listado de recursos compartidos

Los directorios home de los usuarios están accesibles por defecto (en modo sólo lectura).

Comprobando

La utilidad testparm compueba posibles fallos en el fichero smb.conf.

$ testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[downloads]"
Loaded services file OK.
Press enter to see a dump of your service definitions
 
[global]
        workgroup = GROUP
...
 
[homes]
        comment = Home Directories
        create mask = 0700
        directory mask = 0700
        browseable = No
 
[downloads]
        path = /opt/files
...

Cliente

Hay varias formas de acceder a los recursos Samba de otro equipo. Si utilizas Nautilus puedes navegar pon la “Red Windows” o escribir una dirección en la barra de direcciones. Por ejemplo, para acceder al recurso “downloads” de la máquina “medusa” escribe:

 smb://medusa/downloads 

También en Nautilus puedes usar Archivo->Conectar con el servidor. A continuación otras formas de acceder a recursos remotos.

smbfs

Smbfs permite montar un recurso remoto en un directorio, incluso sin ser superusuario. Por ejemplo:

$ smbmount //medusa/downloads directorio_local

también puedes usar mount:

# mount -t smbfs //medusa/downloads directorio_local -o username=richard

o meterlo en /etc/fstab:

//medusa/downloads    /mnt/files    smbfs    defaults    0 0

Puedes desmontar con smbumount y umount respectivamente.

smbclient

Es similar a un cliente FTP en cuanto a su uso y sirve ara obtener mucha información.

Ver los recursos compartidos por otra máquina:

$ smbclient -L medusa
Password:
Anonymous login successful
Domain=[GROUP] OS=[Unix] Server=[Samba 3.0.22]
 
        Sharename       Type      Comment
        ---------       ----      -------
        downloads       Disk      
        IPC$            IPC       IPC Service (medusa server (Samba 3.0.22))
        ADMIN$          IPC       IPC Service (medusa server (Samba 3.0.22))
Anonymous login successful
Domain=[GROUP] OS=[Unix] Server=[Samba 3.0.22]
 
        Server               Comment
        ---------            -------
        MEDUSA               medusa server (Samba 3.0.22)
 
        Workgroup            Master
        ---------            -------
        GROUP                MEDUSA

Seguridad

Si tienes un ordenador que usas como router y quieres utilizarlo como servidor de ficheros con Samba, es buena idea que sólo sea accesible desde la red interna. Para ello edita /etc/samba/smb.conf y en la sección [global] añade (o descomenta) algo como:

interfaces = 127.0.0.1 eth1
bind interfaces only = true

Cambiando eth1 por la interfaz de tu router a la que tengas conectada tu red local.

Referencias