#4sysadmins

Inicio » GNU/Linux » Compartir archivos en Linux con SAMBA

Compartir archivos en Linux con SAMBA

Últimas Entradas

Follow #4sysadmins on WordPress.com

Si estamos conectados en una red de ordenadores con diferentes sistemas operativos y tenemos la necesidad de compartir archivos o crear un servidor de archivos para que el resto de los compañeros entren a trabajar al directorio compartido, sin duda nuestra opción pasa por instalar y configurar samba. En este post se dieron otras alternativas si instalar samba resulta demasiado pesado para nuestros objetivos (compartir por ejemplo de forma casi instantánea un par de archivos con un compañero de trabajo). No obstante instalar y configurar samba no nos llevará demasiado tiempo y quizás interese tener ahí en nuestra red un servidor corriendo con archivos compartidos. Vamos allá…

Breve introducción

Samba es una implementación libre para GNU/Linux del protocolo SMB (ahora renombrado CIFS) con el que sistemas MS Windows comparten sus archivos. Además de servir para compartir archivos e impresoras entre redes mixtas, samba proporciona autenticación de usuarios. Samba está formado por tres demonios:

  1. nmbd: encargado del registro y la resolución de peticiones de los clientes, trabaja mediante UDP y debería ser ejecutado en primer lugar.
  2. smbd: es el propio servicio encargado de la conexión entre los distintos sistemas que operan con archivos e impresoras. Será ejecutado tras haberse iniciado nmbd.
  3. winbind: es opcional, ya que solo deberá de ser ejecutado cuando samba sea miembro de un dominio NT o Active Directory. Es el que proporciona las relaciones de confianza con los dominios de la red. Este demonio una vez iniciado intentará localizar en el archivo de configuración de samba (/etc/samba/smb.conf) las variables idmap ui e idmap gid las cuales proporcionarán un mapeado de usuarios clientes. De no existir estás variables, el servicio permanecerá en stand by.

Pre-requisitos

Es conveniente que deshabilitemos SELINUXiptables (en caso de estar corriendo),  o bien abrir los puertos pertinentes:

$ sudo service iptables stop    ## RPM
$ sudo service ufw stop    ## Debian
$ sudo service fiwalld stop    ## Fedora
$ sudo chkconfig iptables off    ## RPM
$ sudo systemctl disable firewalld    ## Fedora, CentOS 7...
$ sudo vi /etc/selinux/config ; selinux=disabled

Instalando samba

Ya sea RPM o Debian nuestro sistema, lo mas sencillo y rápido es descargarlo de los repositorios:

$ sudo apt-get install samba   ## Debian
$ sudo yum install samba samba-common samba-client   # RPM

Bien ahora ya solo queda editar el archivo de configuración e iniciar el servicio.

Archivo de configuración y recursos compartidos

A continuación solo se va indicar unas pocas líneas con las que podremos tener rápidamente acceso a recursos compartidos, recomiendo que se lea las páginas de man para samba pues esta potente herramienta nos permitirá llegar a unos grados de personalización bastante competentes, en vosotros está :D

$ man smb.conf

Una buena práctica es hacer siempre una copia de los archivos de configuración que vamos a tocar, en este caso:

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Ahora eliminamos el archivo y creamos nosotros uno nuevo con tan solo este contenido:

$ sudo vi /etc/samba/smb.conf
#======================= Global Settings =====================================
    
[global]
    
# ----------------------- Network Related Options -------------------------
# Red a la que pertenece el host
    workgroup = WORKGROUP
# Nombre identificativo
    server string = Mis recursos compartidos
    
# --------------------------- Logging Options -----------------------------
    log file = /var/log/samba/log.%m
    max log size = 50
    
# ----------------------- Standalone Server Options ------------------------
#se accedera a recursos compartidos a través de usuario y contraseña    
    security = user
    host allow = 192.168.1.
    
# --------------------------- Printing Options -----------------------------
    load printers = yes
    cups options = raw

[Cine]
# Comentario sobre el recurso compartido
comment = Mis películas y series
#ruta del recurso compartido
path = /home/nebul4ck/Cine
#forzar a la identificación de usuario y grupo
force user = "nebul4ck"
force group = "users"
#navegable
browsable = yes
#Permisos de escritura
writable = no
#No invitados
guest ok = no
# No mostrar archivos ocultos
hide dot files = yes

La sección Global debe de estar presente siempre y será donde se defina el grupo de trabajo a unirnos y la configuración de seguridad global para todas las carpetas compartidas. Nosotros estamos usando una seguridad a nivel de usuario (security = user), lo que indica que solo podrán acceder a las carpetas compartidas (a menos que en sus respectivas secciones se especifique lo contrario) aquellos usuarios que existan en el sistema y hayan sido registrados con el comando propio de samba que veremos a continuación. Si por ejemplo nuestro samba fuese cliente de un Active Directory el nivel de seguridad debería de definirse como ads. Otro parámetro de seguridad importante es aquel que indica que host pueden conectarse a los recursos, que en nuestro caso serán todos los dispositivos pertenecientes a la red especificada (host allow = 192.168.1. , se debe de tener muy presente el último punto) o bien podremos indicar un host concreto con su IP completa.

Comandos básicos de samba

  • testparm: deberemos de usar este comando cada vez que modifiquemos el archivo de configuración ya que nos validará dichas modificaciones. De haber un error de sintaxis nos lo mostrará.
  • smbtree: realiza una búsqueda en todos los dominios y grupos de trabajo a los que pertenezca el servidor y mostrará todos los recursos compartidos de cada uno.
  • smbclient: muy útil ya que es el propio cliente a nivel de consola del servicio samba. Con él podremos listar los recursos y navegar por ellos (un estilo a ftp). Un ejemplo básico de uso sería aquel en el que listamos los recursos compartidos de una máquina concreta $ smbclient -L \\192.168.1.150
  • smbmount: permite montar ficheros compartidos en máquinas remotas en nuestra máquina local. Es análogo a $ mount -t smbfs <recurso-compartido> <punto-de-montaje>
  • smbpasswd: mediante este comando administraremos los usuarios y contraseñas que podrán acceder a samba. Es necesario que los usuarios existan en el sistema y una vez añadidos con este comando serán mapeados en el archivo smbpasswd. Si queremos añadir un nuevo usuario a samba utilizaremos el comando tal que así $ sudo smbpasswd -a <usuario>, para eliminarlo modificaremos la -a por -x, si queremos deshabilitar un usuario utilizaremos -d y -e para volver a habilitarlo. Si queremos dejar vacía la contraseña de un determinado usuario, utilizaremos -n.
  • pdbedit: este comando acompañado de sus parámetros -L y -w nos permitirá mostrar los usuarios enumerados (-L) y sus campos en un formato compatible con smbpasswd (-w)

Creando usuario

Lo siguiente es crear un usuario en la base de datos de samba con el que poder hacer login al recurso:

$ sudo useradd nebul4ck
$ sudo passwd nebul4ck
Enter new UNIX password:
$ sudo smbpasswd -a nebul4ck
New SMB password:
Retype new SMB password:
Added user nebul4ck.

Iniciamos el servicio

$ sudo service nmbd start    ## RPM y Debian
$ sudo service samba start    ## RPM
$ sudo service smbd start    ## Debian

Listo con esto debemos de tener una carpeta compartida y accesible con el usuario nebul4ck

Automontar el recurso compartido

Si queremos montar en un equipo de la red con Linux el recurso que hemos compartido con samba podremos añadir una entrada al archivo /etc/fstab:

$ sudo vi /etc/fstab
//IP_o_HOSTNAME/recurso_compartido /punto/de/montaje cifs credentials=~/.smbpass

Importante: Si existe espacios en la ruta del recurso compartido, por ejemplo “//IP_o_HOSTNAME/recurso compartido” deberéis de añadir los caracteres 040 en vez de un espacio: “//IP_o_HOSTNAME/recurso040compartido

Podéis encontrar mas errores conocidos y otras opciones en el siguiente link.

Nota: Si veis que no sois capaces de conectar con el recurso porque diga que no tenéis permisos, aconsejo crear un usuario de samba en el servidor que comparte el recurso y añadir en el ordenador donde queremos montar la carpeta un archivo que contenga las credenciales de este usuario.

En el servidor que comparte

$ sudo smbpasswd -a miuser
$ sudo smbpasswd <mipass>

En el ordenador donde vamos a montar la carpeta

$ vi ~/.smbpass
username=miuser
password=<mipass>

Y listo ahora si hemos añadido bien la línea en el archivo fstab, en el próximo arranque tendremos la carpeta montada automáticamente. Si queremos montarla sin reiniciar:

$ sudo mount -a

Importante: Si al montar los directorios nos diese el siguiente error:

mount: wrong fs type, bad option, bad superblock on //micomputer/Images,
 missing codepage or helper program, or other error
 (for several filesystems (e.g. nfs, cifs) you might
 need a /sbin/mount.<type> helper program)

Es que necesitamos instalar en nuestro sistema cifs-utils

$ sudo apt-get install cifs-utils

 

Listo!


Deja un comentario, Gracias!

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: