Anda di halaman 1dari 16

Servidor de archivos multimedia para Android usando GNU/Linux

Hola compaeros, antes de nada me gustara anticipar que esta entrada va a ser un poquito larga, pero creo que a algunos de vosotros os puede merecer mucho la pena. Ya hace tiempo que vengo usando un sistema bastante "curioso" para poder acceder desde mi tablet Android (Samsung Galaxy Tab 10.1) a mis archivos multimedia alojados en mi servidor con Debian GNU/Linux, y recientemente he conseguido lo mismo con el tablet de mi hermana (un iPad 2) y con el smartphone de mi primo (un Samsung Galaxy Mini). El tema que nos ocupa es sencillo: poder reproducir desde el tablet o desde el mvil cualquier contenido multimedia en cualquier punto de la casa, ya sea en la cama, en el estudio, en el jardn (si lo hubiere), en el sof, en el WC (y por qu no? xD) En resumen, desde cualquier punto fsico en el que haya cobertura Wifi. Lo cierto es que lo que os cuento no tiene ningn misterio, no se trata ms que de un ordenador corriendo el servicio Samba que "exporta" aquellos directorios en los que tenemos alojada nuestra coleccin multimedia, ya sea pelculas, series, documentales, etc. De esta forma, el tablet, con los complementos adecuados, pasa de ser un mero artilugio para navegar por internet a convertirse en un autntico reproductor multimedia. En mi opinin, esta es la manera definitiva de sacarle todo el partido al magnfico potencial multimedia que tiene un aparato de estos, por cierto infravalorados por mucha gente debido al desconocimiento generalizado de su potencial. Pero por muy "elemental" que pueda parecernos a nosotros este sistema que os comento, la gente no deja de maravillarse cuando les muestro las cualidades de poder reproducir tantsimos archivos multimedia desde un tablet o desde un smartphone sin necesidad de que existan localmente en el dispositivo. Por lo visto la idea de que un tablet o un smartphone son similares a un ordenador no est muy extendida entre la gente. Sin embargo, pese a que este sistema puede llevarse a cabo de una forma relativamente fcil, no quiero descuidar un aspecto muy importante: la seguridad. Al compartir en la red nuestros archivos, estamos permitiendo el acceso a ellos a una cantidad determinada de usuarios. Si esto no se gestiona adecuadamente, puede suponer un gran agujero de

seguridad, sobre todo si nuestra red inalmbrica no es todo lo segura que debiera o si descuidamos los permisos sobre los archivos multimedia. As que despus de esta introduccin, pongmonos manos a la obra. Vamos a llevar a cabo este pequeo "proyecto" de forma que sea fcilmente ampliable en caso de que haya "futuras incorporaciones" en nuestra red multimedia. Para ello vamos a comenzar suponiendo que en nuestra red van a conectarse inicialmente tres usuarios, el primero de ellos el administrador, y los dos restantes usuarios limitados:

Usuario tony: administrador. Usuario celia: acceso limitado. Usuario jorge: acceso limitado.

Por supuesto, estos usuarios deben formar parte del sistema. Vamos a suponer tambin que el usuario administrador ya estaba inicialmente en el sistema, como suele ocurrir en nuestros equipos. Para aadir los dos usuarios restantes, podemos proceder con la herramienta grfica destinada a ello, o mediante la terminal: $ sudo adduser celia Responderemos a las preguntas y confirmaremos la informacin Posteriormente haremos lo mismo con el segundo usuario: $ sudo adduser jorge Una vez tenemos generados los usuarios, vamos a crear un grupo llamado samba de tal forma que slo los usuarios que formen parte de ese grupo tendrn acceso a nuestro servidor: $ sudo groupadd samba Y para aadir los tres usuarios al grupo recin creado procedemos as: $ sudo usermod -aG samba tony $ sudo usermod -aG samba celia $ sudo usermod -aG samba jorge Si queremos comprobar que vamos bien, podemos ejecutar el comando groups seguido del nombre de usuario, de esta forma se listarn los grupos a los que pertenece un usuario. Ntese que en caso de que en un futuro se incorpore a nuestra red un nuevo usuario, solo tendremos que aadirlo al grupo samba para que este usuario pueda disfrutar de nuestro servidor de archivos multimedia. introducida.

Bien, ahora instalaremos el servicio Samba. Como siempre, en Debian y derivados lo haremos as: $ sudo aptitude install samba smbclient Si el instalador nos hace una pregunta relativa al grupo de trabajo o Workgroup, podemos dejar el que est por defecto o poner uno a nuestro antojo. En mi caso, mi grupo de trabajo es Casa, original, eh? ;-) Despus, procederemos a editar el fichero de configuracin de Samba, cambiando nano por nuestro editor preferido: $ sudo nano /etc/samba/smb.conf Ahora es cuando hay que decidir cmo se quieren hacer las cosas. La teora permite que cada recurso compartido por samba tenga sus propiedades particulares, de esta forma cada recurso puede tener permisos de acceso individuales y opciones de seguridad especficas. Pero para un caso como el que nos ocupa, considero que lo normal es que el usuario administrador tenga poderes absolutos sobre todos los archivos de todos los recursos, y los usuarios limitados tengan solamente permisos de lectura. Por ello, lo que vamos a hacer es crearnos una seccin personalizada dentro de la seccin [global] donde pondremos "a saco" todas las opciones y permisos que nos servirn para todos los recursos compartidos presentes y futuros, y al final del fichero es donde iremos aadiendo los recursos compartidos. Vamos pues a buscar la lnea que dice bind interfaces only = yes (por ejemplo), dentro de la seccin [global]. Nos situamos justo debajo para comenzar a escribir, dejando un par de lneas de espacio. Y a continuacin, escribimos nuestra seccin personalizada: ################################################################ #Modificaciones personales writeable = yes browseable = yes guest ok = no valid users = @samba write list = tony read list = @samba ################################################################ En mi caso particular tengo algn que otro modificador ms, sobre todo relativos a mscaras de permisos y mecanismos de herencia, pero creo que para el caso que nos ocupa, esto es ms que suficiente. Creo que puede entenderse ms o menos el significado de cada lnea. No profundizar mucho en ello, pero cada lnea viene a decir lo siguiente:

writeable = yes -> Se permite la modificacin de los archivos y carpetas browseable = yes -> Se permite la navegacin por los archivos y carpetas guest ok = no -> Se prohbe el acceso de invitado al servidor valid users = @samba -> Se permite el acceso al servidor nicamente a los usuarios del grupo samba write list = tony -> Lista de usuarios con permisos de escritura (usuario administrador) read list = @samba -> Lista de usuarios con permisos de lectura (usuarios limitados) Ahora, para terminar con el aspecto de la seguridad, nos faltara precisamente lo ms importante. Debemos buscar, dentro de la seccin Authentication, la lnea comentada que dice security = user. Esta lnea hace referencia al mecanismo de autenticacin de Samba, algo extremadamente importante en un servicio como este. Los mecanismos de autenticacin pueden ser dos:

share: los usuarios no necesitan autenticarse en el servidor, por tanto el acceso no puede ser controlado. user: es necesario autenticarse para acceder al servidor, por tanto, el usuario debe existir en el sistema.

Obviamente nosotros usaremos el mecanismo de autenticacin por usuario, dejando as la lnea en cuestin, y verificando que hemos quitado la almohadilla de principio de lnea: security = user Y ahora slo nos queda indicar qu carpetas de nuestro sistema se van a convertir en recursos compartidos. Para ello nos situaremos al final del fichero y aadiremos tantas entradas como recursos tengamos de la siguiente forma: [nombre_del_recurso] comment = descripcion_del_recurso path = ruta_al_recurso En mi caso, tengo dos discos duros internos de dos terabytes cada uno dedicados exclusivamente a ficheros multimedia; el primer disco, llamado TOCHO, contiene pelculas y documentales, y el segundo disco, de nombre IGOR, contiene series. As pues, las entradas necesarias para mi caso seran las siguientes: [TOCHO] comment = Recurso para pelIculas y documentales path = /media/DISCOS/TOCHO [IGOR] comment = Recurso para series path = /media/DISCOS/IGOR

Por supuesto, cada uno debe personalizrselo a su manera. Yo he preferido poner el mismo nombre para el disco y para el recurso porque de vez en cuando, si la necesidad de espacio libre apremia, reorganizo algunos archivos y los cambio de sitio, y as de esta manera no tengo que modificar Samba cada vez que lo hago. Tambin sera conveniente que la ruta del disco existiese aunque el disco no estuviese conectado, ya de de lo contrario, no tengo ni idea de cmo reaccionara samba. Lo mejor para esto es crear la carpeta donde se montar siempre el disco, por ejemplo en la ruta /media/DISCO, y despus crearse una entrada en el fichero /etc/fstab para ese disco de forma que cada vez que se conecte, el disco se monte sobre esa carpeta. Bien, una vez guardado el documento, solo faltara aadir a Samba los usuarios que van a acceder al servidor. Pero eso no lo hemos hecho ya? La respuesta es no. Hemos aadido los usuarios al sistema operativo, pero no al servidor Samba. Faltara, por as decirlo, darlos de alta en la lista de usuarios de Samba, que no tiene por qu ser la misma que la lista de usuarios del sistema. Para ello haremos lo siguiente: $ sudo smbpasswd -a tony $ sudo smbpasswd -a celia $ sudo smbpasswd -a jorge Con cada usuario se nos pedir una nueva contrasea, que ser la clave de acceso de cada usuario al servidor Samba. Como apunte adicional, creo necesario mencionar un posible inconveniente con el acceso a los datos de los recursos. No debemos olvidar que Samba tambin tiene en cuenta los permisos locales de los archivos del servidor. Con esto quiero decir que debemos asegurarnos de que los datos de los recursos a los que van a acceder los usuarios tengan los permisos adecuados. Un ejemplo. Si ejecuto un ls (list) sobre la raz de mi disco de Series, me podra encontrar con esto: drwxr-xr-x 89 tony tony 4,0K mar 3 19:53 Series

Podra el usuario jorge acceder al interior de la carpeta Series? La respuesta corta es que s podra, ya que la carpeta tiene habilitados los permisos de lectura (r) y ejecucin (x) para otros. La respuesta larga es que s podra, pero que sin embargo podramos pensar que estamos "dejando pasar a demasiada gente", por as decirlo, ya que estamos permitiendo el acceso a usuarios que no estn en la lista de acceso de la carpeta, en este caso, propietario tony y grupo tony. Pero lo cierto es que no es necesario, bajo mi punto de vista, llegar al extremo de restringir tambin el acceso por esta va. Me explicar. Un usuario que ha intentado acceder a nuestro servidor Samba y lo ha conseguido (por ejemplo Jorge), significa que ha superado el filtro de seguridad que hemos establecido a nivel de recurso. Por tanto, esto quiere decir que este usuario pertenece por fuerza a nuestro sistema, y los permisos de lectura de que disfrutar

(que no de escritura, ya que los tiene denegados por va Samba a nivel de recurso) los determinarn los permisos locales de los elementos a los que acceda, ya sean archivos o carpetas. Es por ello que ya disponemos de un filtro de seguridad muy efectivo a nivel de recurso compartido, por tanto no es necesario que establezcamos otro filtro de seguridad a nivel de elemento local, ya que, en teora, estos usuarios slo van a acceder a nuestro servidor a travs de Samba. As que teniendo esto en cuenta, nicamente debemos asegurarnos de que todos los elementos de nuestra coleccin (tanto archivos como carpetas) tengan permisos de lectura y ejecucin para otros. Bien, para hacer efectivos todos los cambios que hemos realizado en Samba, procedemos a reiniciar el servicio: $ sudo /etc/init.d/samba restart Si queremos comprobar que Samba est exportando debidamente los recursos que le hemos indicado, podemos lanzar lo siguiente: $ smbclient -L localhost Si todo ha ido bien, el sistema nos pedir la contrasea del usuario que ha lanzado la orden, y si la introducimos correctamente, nos dar la lista de recursos compartidos por la mquina. En caso de ejecutarla un usuario que no haya sido dado de alta en Samba, arrojar un error de autenticacin y no mostrar los recursos compartidos. Esto demuestra que nuestro servidor est funcionando correctamente. Y con esto, hemos terminado la parte relativa al servidor. Ahora vamos a ver qu podemos hacer con nuestro dispositivo Android (tablet o smartphone) para poder acceder a nuestro servidor, y conseguir la tan ansiada reproduccin multimedia a distancia ;-) En caso de disponer de un iPad, podemos ir directamente al tutorial para configurar el mismo. Por supuesto, partimos de la base de que el tablet est conectado va Wifi a la misma red local que el servidor Samba. Primeramente necesitamos una forma de acceder a nuestros recursos de red. Es posible que rooteando el dispositivo pueda conseguirse el mismo efecto de forma nativa, pero nosotros lo vamos a hacer sin necesidad de acceso root (es posible que haya otras formas, as que acepto sugerencias). El primer paso es acceder al Market, o al Play Store, como se llama ahora en mi tablet, y buscar la aplicacin llamada ES Explorador de Archivos:

Esta aplicacin, entre otras cosas, nos va a permitir acceder a recursos de red. Una vez instalada, la abrimos desde su lanzador, y nos encontraremos algo como esto:

Como podis ver, esta aplicacin est estructura por pestaas, y a nosotros nos interesa la pestaa LAN. Dicha pestaa, ahora vaca, ser la que contendr la lista de recursos compartidos a los que podremos tener acceso. Para crear un nuevo recurso, presionamos sobre el botn Nuevo y escogemos Servidor. Nos encontraremos algo as:

Bien, vamos a rellenar los campos con los siguientes datos, los dems los dejaremos vacos: Servidor: IP_del_servidor/nombre_del_recurso Usuario: nombre de usuario con el que queremos acceder desde ese dispositivo determinado Contrasea: la contrasea de acceso del usuario que hemos puesto arriba Mostrar como: el nombre con el que se nos mostrar el recurso En mi caso, la cosa quedara as:

En lugar de IP he puesto el nombre de red del servidor, puesto que al tener un servidor DNS en mi red puedo hacerlo de esta forma, pero lo normal es que tengis que poner la IP en lugar del nombre (otro da haremos un tuto sobre cmo montar un DNS casero). Procederemos de esta forma con todos los recursos que tengamos (en mi caso dos) y cuando finalicemos, nos encontraremos con algo similar a esto:

Bien, este es el aspecto final de nuestra pantalla de recursos de red. Si todo ha ido bien, al entrar a algn recurso compartido nos encontraremos con todo su contenido, sea cual sea este. As que, navegando por las carpetas necesarias, podemos llegar hasta donde tenemos nuestros archivos multimedia, y poder as reproducirlos. Pero para ello, necesitamos un reproductor que est a la altura. Nunca me ha funcionado bien el reproductor que lleva por defecto Android cuando he accedido a recursos de red. Sin embargo, hay un reproductor gratuito en el Market llamado MX Video que nos viene perfecto para nuestra tarea:

Una vez encontrado e instalado el reproductor MX Video, podemos acceder a travs del explorador de archivos ES a nuestras carpetas de red, y buscar una carpeta que contenga archivos de vdeo:

Al acceder a alguno de estos vdeos, nos encontramos con un mensaje donde se nos pregunta el reproductor con el que queremos reproducir el archivo:

As que ahora podemos elegir el reproductor MX Video para poder reproducir el archivo, y adems hacerlo permanente para que no se nos vuelva a hacer esta pregunta. Y este, compaeros, es el resultado final:

A partir de este momento, nuestro tablet o smartphone se ha convertido en un autntico reproductor multimedia capaz de reproducir cualquier contenido que tengamos alojado en nuestro servidor, por supuesto sin necesidad de transferir los archivos al dispositivo. Y todo ello con el nivel de seguridad que se merece. De esta forma, si hemos conectado los recursos con las credenciales de administrador, tendremos control total sobre los archivos, y podremos, por ejemplo, eliminar una pelcula desde el tablet una vez la hayamos visto. Sin embargo, si hemos conectado los recursos con las credenciales de un usuario limitado, este usuario solamente podr acceder en modo lectura a los archivos, sin posibilidad de hacer ninguna modificacin. Como ltimo apunte, si notis que el reproductor MX va a trompicones o directamente no reproduce nada, puede ser debido a que por defecto usa el decodificador H/W. Debis ir a las preferencias del reproductor, y cambiar al decodificador S/W. Creedme, compaeros, que no tiene precio poder llevarse el tablet a la cama o al sof y disfrutar sin despeinarse de cuatro terabytes de contenido multimedia ;-) Y eso es todo amigos, espero que os haya resultado til. Como ya he comentado, este tutorial sirve para cualquier dispositivo con Android en el que se puedan instalar las aplicaciones que hemos visto. Concretamente ha sido probado con xito en tres dispositivos con Android: Samsung Galaxy Tab 10.1, Samsung Galaxy Mini y Samsung Galaxy S2.

Por supuesto, se aceptan sugerencias, correcciones y crticas constructivas. Me reservo el derecho a escribir prximamente un tuto similar orientado al iPad. Un saludo, y hasta pronto.