Como instalar un servidor Samba y Webmin en Raspberry Pi

rpi-ws-smbSamba 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.

pi-smb.png

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).

Samba y Webmin en Raspberry Pi

Samba y Webmin en Raspberry Pi

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.

DUB H4_angle

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:

webmin

Espero que este tutorial os haya sido útil.

Salu2

Santi

Rev.01.2017