Samba y Webmin en Raspberry Pi
Para los que necesitéis un servidor de archivos permanentemente conectado, silencioso, con una inversión mínima, ocupando un espacio muy reducido, y con un consumo eléctrico casi insignificante, una muy buena opción es una Raspberry, con Samba instalado y uno o varios discos externos USB.
En los pasos siguientes voy a describir los pasos a seguir para convertir una Raspberry Pi en un servidor Samba, administrable a través de un entorno gráfico web (Webmin).
Para este proyecto he utilizado un disco duro USB formateado en hfsplus (formato OSX). Entiendo que lo más eficiente sería formatearlo en formato ext4 (linux) pero en mi caso concreto mi disco estaba formateado para su uso en un Mac, tenía varios terabytes de información, y no quería arriesgarme a borrar nada durante el proceso de cambio de formato.
Antes de empezar debemos tener en cuenta el tipo de disco externo que tenemos, y si se alimenta de corriente a través del puerto USB o mediante alimentación externa, ya que los puertos USB de las Raspberry carecen de potencia suficiente para alimentar un disco USB.
Si optamos por un disco USB de los que se alimentan a través del puerto USB tendremos que montar un Hub USB con alimentación, un dispositivo que viene a tener un coste de entre 14 y 30 euros.
Para instalar el software necesario para activar y administrar Samba necesitamos ejecutar la siguiente orden:
sudo apt-get install samba samba-common-bin
Para permitir a la Raspberry acceder a discos en formato Mac (hfsplus) teclearemos lo siguiente (si nos pide confirmación decirle que sí):
sudo apt-get install hfsplus hfsutils hfsprogs
Seguidamente tenemos que configurar nuestra RPI para que monte automáticamente ese disco duro en una ubicación determinada.
Para ello primero veremos los volúmenes y su punto de montaje con:
df -h
Se nos mostrará algo parecido a esto:
root@raspbian:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 4.0G 10G 29% /
devtmpfs 459M 0 459M 0% /dev
tmpfs 463M 0 463M 0% /dev/shm
tmpfs 463M 7.1M 456M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 60M 20M 41M 34% /boot
/dev/sdb2 2.8T 1.2T 1.6T 43% /media/usb2
/dev/sda2 1.9T 1.7T 196G 90% /media/usb1
tmpfs 93M 0 93M 0% /run/user/1000
/dev/sdb1 300M 11M 289M 4% /media/usb0
/dev/sda1 197M 512 197M 1% /media/usb3
tmpfs 93M 0 93M 0% /run/user/0
Dado que en nuestro caso queremos configurar el disco de 2 Tb, tomaremos nota de:
/dev/sda2 y /media/usb1
A continuación ejecutaremos:
blkid
Lo que nos mostrará algo como esto:
root@raspbian:~# blkid
/dev/mmcblk0: PTUUID=»ea0e7380″ PTTYPE=»dos»
/dev/mmcblk0p1: SEC_TYPE=»msdos» LABEL=»RBIAN» UUID=»86EA-017B» TYPE=»vfat» PARTUUID=»ea0e7380-01″
/dev/mmcblk0p2: UUID=»ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202″ TYPE=»ext4″ PARTUUID=»ea0e7380-02″
/dev/sda1: LABEL=»EFI» UUID=»67E3-17ED» TYPE=»vfat» PARTLABEL=»EFI System Partition» PARTUUID=»e3af3804-f33a-4669-ae97-2fcdd741ec5d»
/dev/sda2: UUID=»fceae2d1-1f15-3e02-bebf-c295169f1839» LABEL=»TOSHIBA-2GB» TYPE=»hfsplus» PARTLABEL=«TOSHIBA-2GB» PARTUUID=»dd4f00ff-dd50-4375-a9ff-2aaef686b3fa»
/dev/sdb1: LABEL=»EFI» TYPE=»vfat» PARTLABEL=»EFI» PARTUUID=»c33431cf-faa1-47e4-832f-482e92182804″
/dev/sdb2: UUID=»7f4d2c7a-0fe8-3e61-bf21-f44b0c2e7051″ LABEL=»TOSHIBA-3TB» TYPE=»hfsplus» PARTLABEL=»TOSHIBA-3TB» PARTUUID=»e49be130-7346-4490-b945-24b74e843b31″
Buscaremos /dev/sda2 y nos tomaremos nota de su UUID, que viene a ser el identificativo/referencia interna de nuestro disco duro.
UUID=»fceae2d1-1f15-3e02-bebf-c295169f1839»
Editaremos el fichero de configuración fstab:
sudo nano /etc/fstab
Y en su última línea teclearemos (es solo una línea, recomiendo hacer copy/paste):
UUID=fceae2d1-1f15-3e02-bebf-c295169f1839 /media/usb1 hfsplus force,rw,nofail 0 0
Guardaremos los cambios con CTRL + X, pulsando a continuación Y para confirmar y Enter para guardar los datos sobre el fichero ya existente.
Con el punto de anclaje automático en el arranque informado y configurado para evitar errores de acceso, lo siguiente es configurar el servicio SAMBA, el cual en nuestro ejemplo se va a configurar para que cualquier persona conectada físicamente a nuestra red pueda acceder. Lo hacemos así para que en el caso de reproductores multimedia no haya problemas de acceso/autenticación, y dando por hecho que la información no es sensible.
nano /etc/samba/smb.conf
Con el fichero de configuración abierto, necesitamos hacer los siguientes cambios (en negrita los datos a cambiar):
# Change this to the workgroup/NT-domain name your Samba server will part of workgroup = WORKGROUP security = user encrypt passwords = yes # Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server wins support = yes
Y al final del fichero de configuración añadiremos lo siguiente (según nuestro ejemplo) (recomiendo hacer copy/paste):
[Toshiba2TB]
path = /media/usb1
comment = Toshiba2Tb
browseable=yes
writeable=yes
guest ok=yes
read only=No
create mask =0777
directory mask =0777
Saldremos grabando con CTRL + X, pulsando a continuación Y para confirmar y Enter para guardar los datos sobre el fichero ya existente.
A continuación no tendremos más que reiniciar el sistema:
shutdown -r now
Una vez arrancado el sistema, informaremos los usuarios y grupos con acceso a nuestro disco con:
sudo chmod 777 /media/usb1/
A partir de ese momento en nuestra red aparecerá un recurso nuevo disponible, accesible sin usuario ni password, para lectura y escritura.
Durante la configuración fue necesario (lo achaco a un mal apagado del disco por mi parte) comprobar/reparar el disco, circunstancia que detecté al ver que el disco se montaba en modo de solo lectura (read/only). Para resolverlo hice lo siguiente:
fsck.hfsplus -f /dev/sda2
Si queremos crear un usuario para restringir el acceso, por ejemplo ‘pi’ podremos asignarle un password con:
sudo smbpasswd -a pi
(nos pedirá el nuevo password dos veces)
Para los que queráis utilizar Samba teniendo la capacidad de administrarlo a través de un entorno gráfico, os recomiendo instalar Webmin, una aplicación gratuita, de distribución libre y código abierto, que os permitirá administrar vuestro/s servidor/es Samba desde un entorno gráfico accesible desde el navegador de cualquier ordenador de vuestra red.
Para instalarlo:
sudo wget http://prdownloads.sourceforge.net/webadmin/webmin_1.740_all.deb
dpkg –install webmin_1.740_all.deb
Si se produce algún error haciendo referencia al alguna dependencia, ejecutad lo siguiente:
apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
Una vez finalizada la instalación, la aplicación será accesible desde cualquier navegador informando:
https://ipdenuestraraspberry:10000
Se nos pedirá el usuario y el password de acceso a nuestra Raspberry, y a continuación veremos algo similar a esto:
Espero que este tutorial os haya sido útil.
Salu2
Santi
Rev.01.2017