Compartir discos o carpetas en Raspberry Pi con Raspian
Para compartir carpetas o discos duros desde un a Raspberry Pi con Raspian o en otros sistemas basados en Debian se puede usar Samba, que es una implementación de servicios y protocolos que permite que se puedan compartir archivos, carpetas y discos duros completos entre ordenadores, manteniendo toda su configuración en un único archivo localizado en /etc/samba/smb.conf
.
Tanto las carpetas o directorios compartidos como los discos duros se verán en los ordenadores remotos como carpetas compartidas.
Se pueden crear diferentes usuarios y limitar los accesos a determinadas carpetas compartidos a según que usuarios.
Para poder configurar Samba hay que actualizar el sistema en primer lugar, en la Raspberry Pi:
sudo apt update
sudo apt upgrade
Posteriormente se instala Samba:
sudo apt install samba
Compartir unidad de disco
El siguiente paso es configurar la unidad de disco que se va a compartir, la cual debe estar previamente montada en el sistema.
Se edita el archivo de configuración de Samba smb.conf
, por ejemplo con nano
ubicado en:
sudo nano /etc/samba/smb.conf
Y se añade el siguiente código al final del mismo:
[Nombre_Unidad]
comment = Nombre_Unidad
path = /ruta/de_la_unidad/Nombre_Unidad
public = no
writeable = yes
browseable = yes
only guest = no
create mask = 0777
directory mask = 0777
Aunque sus directrices parecen obvias, cada una significa los siguiente:[Nombre_Unidad]
Nombre del disco duro y que será el que se visualice como carpeta compartida en el resto de los ordenadores.comment = Nombre_Unidad
Descripción, en este caso he puesto el nombre de la unidadpath = /ruta/de_la_unidad/Nombre_Unidad
Ruta donde se encuentra montada la unidadpublic = no
No es accesible a todo el mundowriteable = yes
Se permite la escriturabrowseable = yes
Es visible en la redonly guest = no
No está permitido el acceso a invitadoscreate mask = 0777
Permiso de lectura y escrituradirectory mask = 0777
Permiso de lectura y escritura
Por último se reinicia el servicio Samba:
sudo /etc/init.d/smbd restart
La unidad ya debe de ser visible y accesible desde la red y par acceder directamente se puede usar el protocolo smb://
smb://192.168.XXX.XXX
Usuario en Samba
Se pueden crear usuarios en Samba y si, por ejemplo, cse crea el usuario que ya existe en el ordenador servidor o Raspberry será visible una carpeta con el nombre de dicho usuario que tras autenticarse se accederá a /home/usuario/
.
sudo smbpasswd -a usuario
Tras pedir dos veces la contraseña que se le quiera asignar, el usuario y su carpeta compartida ya estarán habilitados.
Compartir carpeta
Para compartir una carpeta de un disco duro el proceso es prácticamente el mismo que el que se ha seguido para compartir una unidad.
El paso previo, en este caso, es crear la carpeta que se va a compartir y darle los permisos necesarios:
sudo chmod -R 777 /home/usuario/carpeta_compartida/
Se añade el siguiente código al final del mismo fichero de configuración /etc/samba/smb.conf
:
[Nombre_Carpeta]
comment = Nombre_Carpeta
path = /home/usuario/Nombre_Carpeta
public = no
writeable = yes
browseable = yes
only guest = no
create mask = 0777
directory mask = 0777
Tanto al crear una carpeta compartida como al crear una unidad compartida los valores puestos pueden diferir según las necesidades de cada situación o persona.
Comprobación
Para comprobar que las modificaciones que se han realizado en el archivo de configuración se puede ejecutar:
testparm
Si todo está bien mostrará un mensaje aproximadamente igual al siguiente texto:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Permitir y denegar IPs
Se puede permitir el acceso o bloquear el mismo a una o varias IPs o incluso a un rango de ellas.
Permitir acceso
Permitir una o varias IPs que se separan por comas:
hosts allow = 192.168.0.43, 192.168.0.88
Permitir todas las IPs en el rango 192.168.. excepto una:
hosts allow = 192.168. EXCEPT 192.168.0.88
Permitir todo un rango:
hosts allow = 192.168.0.0/255.255.255.0
Permitir hosts específicos:
hosts allow = raspi4, raspi400, pc_de_miguel
Denegar acceso
De forma automática todo lo que no esté permitido en las reglas anteriores, está denegado.
En caso de conflicto «permitir» tiene preferencia sobre «denegar».
Denegar una IP:
hosts deny 192.168.0.32