Servidor NAS con SAMBA ====================== .. image:: _images/sambalogo.png :align: right :width: 250px .. contents:: Tabla de contenidos Introducción ------------ Antes de tener la Raspberry Pi probablemente tuvieras un ordenador donde almacenabas todo tu contenido multimedia. Ahora lo ideal sería transferir todo ese material al disco duro USB conectado a la RPi. Ya que tenemos SSH podríamos utilizar el protocolo SFTP para transferir los ficheros, pero también podemos tener una carpeta compartida en la red mediante **samba** y así transformar nuestra RasPi en un servidor NAS. Instalar Samba -------------- Lo primero es instalar los dos paquetes necesarios para lo que queremos: .. code:: shell $ sudo apt-get install samba samba-common-bin El primero es el samba en sí mismo y el segundo nos sirve para poder asignar una contraseña a nuestro usuario de samba. Hasta aquí fácil. Ahora viene lo más crítico, que es configurarlo apropiadamente. El 90% de los fallos vienen de aquí. Configurar samba ---------------- Vamos a tocar lo básico, el fichero de configuración está muy bien comentado y explicado, por si te apetece toquetear y adaptarlo a tus necesidades, pero para el común de los mortales habrá que cambiar muy pocas cosas. .. code:: shell $ sudo nano /etc/samba/smb.conf Toda línea que empiece por # (almohadilla) es un comentario y no tiene efecto en la configuración del samba. Nosotros nos tenemos que fijar en 2 parámetros fundamentalmente: .. code-block:: shell workgroup = WORKGROUP <- Es mi red local wins support = yes El primero es **workgroup** y da nombre al grupo de trabajo de tu red, por defecto viene el que le pone Windows de serie a sus redes. Normalmente no es necesario cambiarlo. El segundo, **wins support**, aparecerá comentado, con una almohadilla delante. Es muy importante que descomentes esa línea (quita la #). Da igual si vas a utilizarlo o no, eso ya lo decides tú poniendo yes o no, pero la configuración del samba debe leer ese parámetro para que todo funcione correctamente. Compartir carpetas ------------------ Una vez puestos correctamente esos 2 parámetros del principio del fichero nos iremos al final del todo y en líneas nuevas escribiremos esto: .. code-block:: shell [DiscoUSB] comment=Disco USB en la RPi path=/media/discousb browseable=yes writeable=yes create mask=0775 directory mask=0775 only guest=no - Donde la primera línea define el nombre que tendrá nuestra carpeta compartida en la red, en mi caso ``DiscoUSB``. - ``comment`` puede ser cualquier cosa que quieras que defina a la carpeta. - ``path`` es la ruta de la carpeta que quieres compartir, como yo comparto todo el disco duro USB especifico dónde está montado. - ``browseable`` para que se pueda navegar por los subdirectorios. - ``writeable`` para poder leer y escribir. - ``create mask`` y ``directory mask`` definen los permisos que se aplican a los ficheros y directorios nuevos. - ``only guest`` permite acceder como usuario anónimo o no. No creo que sea difícil de entender. Si quieres compartir más carpetas, debajo de estas líneas pondrías otras similares para cada carpeta, por ejemplo: .. code-block:: shell [MusicaRPi] comment=Musica en la RPi path=/media/discousb/musica browseable=yes writeable=yes create mask=0775 directory mask=0775 only guest=no [Torrents] comment=Torrents para Transmission path=/media/discousb/torrents browseable=yes writeable=yes create mask=0775 directory mask=0775 only guest=no Mi ejemplo que funciona 100%: [TOSHIBA2TB] comment = HDD Externo path = /media/2TB writeable = YES create mask = 0777 directory mask = 0777 browseable = Yes force user = pi valid users @users Y así con todas y cada una de las carpetas que desees compartir en tu red. Yo prefiero compartir directamente el directorio donde está montado el disco duro USB y así tengo acceso a todo, pero cada uno que se lo monte como le convenga. Ahora guardamos y cerramos el fichero de configuración: Ctrl+O, Intro, Ctrl+X. Establecer contraseña --------------------- Por último, vamos a darle una contraseña a nuestro usuario pi, la lógica diría que es la misma que para acceder al sistema, pero no, samba tiene su propia gestión de contraseñas así que hay asignarle una a cada usuario, puedes utilizar la misma para no liarte u otra diferente por seguridad: .. code:: shell $ sudo smbpasswd -a pi Nos pide que pongamos una contraseña dos veces y fin. Esa será la contraseña que debemos poner cuando queramos acceder a alguna de las carpetas compartidas que definimos antes en el fichero de configuración. Para terminar vamos a reiniciar el servicio para que todos los cambios surtan efecto: .. code-block:: shell $ sudo /etc/init.d/samba restart .. warning:: EVITAR COMPARTIR LA CARPETA DE USUARIO Normalmente, cuando instalamos el servidor Samba se comparte por defecto la carpeta del usuario, es decir, ``/home/pi`` en nuestro caso. Si queremos evitar esto, podemos añadir al fichero de configuración de Samba los datos necesarios para que no comparta esa carpeta. Lo haremos así, haciendo referencia al directorio o carpeta del usuario: .. code-block:: shell [pi] comment = directorio del usuario path = /home/pi browseable = no writeable = no read only = yes guest ok = no public = no La clave está en la línea ``browseable = no``, que es la que realmente impide que se muestre la carpeta. Ahora volvemos a reiniciar el servidor para que Samba se ponga en funcionamiento: .. code:: shell sudo /etc/init.d/samba restart Con este último paso, ya podemos compartir ficheros entre la Raspberry Pi y cualquier otro dispositivo que tengamos en casa sin necesidad de utilizar un software de FTP, ya sea un PC con Windows o con Linux, un Mac o un dispositivo móvil. En Android yo utilizo ES File Explorer para acceder a mis carpetas compartidas por LAN.