Samba en Raspberry Pi

Actualizado el 6 de Junio de 2021

Una forma rápida y sencilla de instalar Samba, primero como siempre actualizar:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Servidor

Instalamos los paquetes samba necesarios

sudo apt-get install samba-common smbclient samba

En adelante vamos a usar el usuario pi para los ejemplos que es el que viene por defecto en la instalación, si quisiéramos usar otro podríamos crearlo con:

sudo adduser acme

Igual puede interesar crear un usuario solo para validarse por red pero no para poder iniciar sesión como un usuario normal, algo parecido a una cuenta de servicio.

sudo adduser -shell /bin/false --no-create-home acme

Y ahora establecemos una contraseña de red para que este usuario se pueda conectar a la carpeta compartida:

sudo smbpasswd -a acme

Ahora creamos la carpeta de red en el fichero /etc/samba/smb.conf

[acme]
   comment = La carpeta secreta del grupo Acme
   path = /home/pi/acme
   read only = No
   valid users = acme
   write list = acme # Usuarios que pueden escribir
   create mask = 0660 # Mascara de creación de archivos
   directory mask = 0770 # Máscara de creación de directorios

Con este comando verificamos que todo está correcto:

testparm

Hay que dar los permisos adecuados al usuario que hemos creado sobre la carpeta compartida, por ejemplo:

sudo chown -R pi:pi /home/pi/acme

Si todo es correcto reiniciamos Samba:

sudo service smbd restart

Si tenemos algún problema al configurar o conectar al recurso remoto podemos usar el comando smbclient para poder ver los recursos compartidos de un servidor, este comando nos pedirá una contraseña para poder acceder y nos sacará los recursos compartidos.

smbclient -L coyote.acme.hell

Cliente

Ahora hay que configurar y probar el lado cliente, ya sea desde Linux o desde Windows.

Raspberry Pi

Desde el lado cliente en una Raspberry se pueden establecer valores de permisos a ficheros y directorios a través de las opciones file_mode y dir_mode en el fichero /etc/fstab usando los valores a establecer en octal, estos serán los permisos que se establecerán al montar la unidad, un ejemplo de entrada fstab sería:

//servidor/carpeta       /mnt/samba/servidor/carpeta      cifs     vers=1.0,file_mode=0775,dir_mode=0775,uid=pi,gid=pi,username=sambauser,password=acme,nofail,iocharset=utf8,auto 0 0

La opción vers sirve para indicar la versión del protocolo SMB a usar, si da errores al montar por parámetros incorrectos una opción puede ser establecer una versión más baja, 1.0, 2.0 o 3.0

Windows

Ahora conectamos al recurso remoto de la forma que elijamos y puede ser que obtengamos el siguiente error en Windows.

Es una advertencia de seguridad indicando que no se permite acceder a recursos remotos que permitan invitados, este comportamiento empezó en la versión 2.0 del protocolo SMB.

Es importante intentar acceder al servidor con el nombre completo, es decir, si tenemos un servidor que se llama server en un dominio home.local deberíamos usar \\server.home.local

Hay dos formas de evitar este error:

Una que es la más práctica es usando la opción de mapear unidades de red de Windows indicando explícitamente usuario y contraseña.

Es necesario también indicar la ruta completa el servidor a la hora de mapear la unidad, es decir \\servidor\carpeta

Si no se quiere usar el dominio por defecto se puede indicar como usuario .\pi al poner .\ se usará como dominio la máquina local.

La otra opción es deshabilitando este error, a través de Directiva de equipo local (gpedit.msc), en esta ruta:

Configuración de equipo local\plantillas administrativas\Red\Estación de trabajo Lanman\Habilitar inicios de sesión de invitado no seguros

Habilitamos esta opción lo que evitará el mensaje.

Samba en Raspberry Pi