Compartir directorios con Webfs

Webfs es un servidor web muy simple que permite acceder a cualquier tipo de contenido estático, es decir, nada que ver con servidores web de la categoría de Apache. Ni tan siquiera dispone de archivo de configuración, todas sus funcionalidades se pueden controlar por parámetro. Entonces… ¿Qué tiene de interesante webfs?

¿Cuantas veces nos ha pasado que queremos pasar algún archivo a un amigo por la red usando GNU/Linux y no tenemos nada configurado para llevarlo a cabo? A mi me ha pasado en más de una ocasión y suele ser engorroso ponerte a configurar un servidor FTP o Samba.

Es más, ¿Cuantas veces ha pasado que queremos pasar un archivo a otra persona desde un GNU/Linux a un sistema MS Windows y el usuario no tiene ni idea de que es un cliente FTP? Aquí siempre hay 2 opciones:

a) Le explicas que es un FTP y os bajais un cliente de FTP.
b) Bajas tu un cliente de FTP y pasas el archivo sin explicaciones 😛

En función de quien es el usuario es muy probable que si se elige la opción a) al cabo de media hora acabemos saltando a la opción b).

¿En que nos puede ayudar webfs? Vayamos por puntos:

  1. Puedes compartir cualquier directorio de tu sistema GNU/Linux con un comando, por ejemplo:
    webfsd -F -r /home/usuario/peliculas -p 2000
    

    Esto indica que no queremos que se ponga en segundo plano como demonio (-F), queremos compartir el directorio “/home/usuario/peliculas” y debe escuchar por le puerto 2000. Para pararlo basta hacer ctrl+c. Si quitamos el -F, al ejecutar webfsd automáticamente nos quedará libre la terminal y se ejecutará en segundo plano, para pararlo tendremos que ejecutar “killall webfsd” o “kill pid_webfsd“.

  2. ¿Que ordenador no tiene hoy en día un navegador? ¡Prácticamente cualquier sistema operativo dispone de un navegador web! Por tanto desde el otro ordenador podremos abrir el navegador y apuntar a nuestro servidor: http://[nuestra_ip]:2000/

    Esto nos mostrará un listado de los directorios y ficheros que tenemos en “/home/usuario/peliculas”, podremos elegir el fichero que queramos y descargarlo. Incluso podríamos usar gestores de descarga para poder resumir/reanudar, como el wget:

    wget -c http://192.168.0.33:2000/accion/ToyStory2.avi
    

    El archivo se descarga en el lugar donde se ejecute wget, en caso de que queramos pararlo podemos presionar ctrl+c y para reanudar más adelante, en el mismo directorio se vuelve a ejecutar wget pero con el modificador “-c” y así completará el archivo que habíamos dejado a medias.

Alguien podría decir: ¡Pero es que yo voy a pasar el archivo a través de una red pública donde hay más usuarios y no quiero que estos se aprovechen y accedan a lo que comparto! Hay solución:

webfsd -F -r /home/usuario/peliculas -p 2000 -busuario:password

De esta forma cuando alguien intente acceder al servidor se le preguntará por un usuario/password y debe especificar el mismo que hayamos indicado al ejecutar webfsd (no es necesario que corresponda a un usuario real del sistema).

Es más, incluso es posible utilizar SSL y hacer que las comunicaciones estén encriptadas. Con esto perderemos velocidad, pero ganamos en privacidad y mantenemos la flexibilidad. Esta característica no he conseguido que funcione:

webfsd -S -C /etc/apache2/conf/ssl/server.crt -F -r ./ -p 2000

Es necesario disponer de un certificado para que pueda realizar la encriptación, estos certificados los podemos generar nosotros mismos con OpenSSL:

openssl genrsa -out domainname.key 1024 
openssl req -new -key domainname.key -out domainname.csr 
openssl x509 -req -days 36000 -in domainname.csr -signkey domainname.key -out domainname.crt

Con esto generamos primero una llave RSA no protegida por ningún password (si nos roban esto, podran desencriptar nuestras comunicaciones con esta llave o hacerse pasar por nosotros), a continuación creamos la petición de certificado y finalmente creamos el certificado firmado por nosotros mismos (en sitios de comercio electrónico los certificados suelen ser firmados por entidades certificadoras, las cuales cobran por hacer esto… aunque tb hay webs que firman certificados de prueba temporales como FreeSSL).

Si intento acceder con Mozilla a “https://localhost:2000” me indica: “Mozilla and localhost cannot communicate securely because they have no common encryption algorithms”. Si alguien consigue hacerlo funcionar agradeceria que añadiese algun comentario al artículo.

¿Qué os parece webfs? ¿Utilizáis algún otro método para compartir archivos? Seria interesante integrarlo en gnome, concretamente el navegador de disco nautilus, utilizando los nautilus-scripts. Se me ocurre ahora mismo un método:

1) Tener un directorio que siempre es compartido, por ejemplo /home/usuario/Desktop/shared/
2) Al iniciar la sesión en gnome se ejecuta automáticamente webfs: webfsd -r /home/usuario/Desktop/shared -p 2000
3) Hacer un nautilus script que permita compartir carpetas y lo que hara en realidad es un enlace simbólico dentro de shared/ que apunta al directorio que hemos indicado. Así podremos compartir varios directorios con una única instancia de webfs. También podriamos hacer que se añadiese un emblema para marcar esa carpeta como compartida.
4) Para dejar de compartir una carpeta:
   a) Hacer un nautilus script, vas a un directorio compartido, lo seleccionas y ejecutas el “descompartir”, el script borra el enlace simbólico y quita el emblema.
   b) El usuario puede borrar directamente el enlace de la carpeta shared/. Esto implica que no se pueda quitar automáticamente el emblema en el caso de que se pueda implementar esto.

¿Qué os parece la idea? Al final me ha salido un artículo más largo de lo que pensaba al principio. 😉
Autor: marble

This entry was posted in Software Lliure. Bookmark the permalink.

7 Responses to Compartir directorios con Webfs

  1. shinjix says:

    “¡Prácticamente cualquier navegador dispone de un navegador web!” xDD

    Pel que fa al program sembla mooolt interessant!! El provaré, ja que hi ha una coseta amb la que m’aniria molt i molt bé. I si tinc temps també miraré lo de l’OpenSSL, a veure que me diu.

    Si senyor, molt bo, molt bo.

    Tomàs Reverter Morelló
    trev(at)tinet.fut.es

  2. jBilbo says:

    Como diría … mmm (¿?numacuerdo): si te hubiera conocido antes… xDD

  3. marble says:

    Incoherencia arreglada 😉


    Marble :: http://www.marblestation.com

  4. simmaniac says:

    (qepd)

  5. NeiL says:

    Como diría Ford Farlane: ” Increible ble ble ble”

  6. Anonymous says:

    Mmmmmmmmmm yo estoy ahora peleandome con apache2 pero probare tu solución de mini servidor para compartir, puede tener muchas aplicaciones. Gracias. Un saludo.

  7. Anonymous says:

    Hola, m’estic tornant boig intentant recordar com es diu el producte que anunciava el jesús puente quan deia allò de “ay si te hubiera conocido antes”!!!!! Si us plau, algú em pot ajudar??????????? Invito a manzanilla con madalena a quien me ayude!!!
    mil gràcies!!!

Leave a Reply