{"id":135,"date":"2004-06-15T19:35:09","date_gmt":"2004-06-15T17:35:09","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=135"},"modified":"2012-04-26T19:09:12","modified_gmt":"2012-04-26T17:09:12","slug":"webfs-compartir-archivos-por-http","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=135","title":{"rendered":"Webfs: Compartir archivos por HTTP"},"content":{"rendered":"<p>Ayer me baje de los servidores de <a href=\"http:\/\/www.gpltarragona.org\">GPL Tarragona<\/a> unos videos de unas <a href=\"http:\/\/bulma.net\/body.phtml?nIdNoticia=2041\">jornadas de bulma<\/a> que habiamos puesto a <a href=\"http:\/\/jhernandez.gpltarragona.org\/blog\/archives\/000099.html\">disposici\u00f3n de todos<\/a>. Lo baje en la misma universidad, utilice wget ya que estan disponibles a trav\u00e9s del servidor web, es decir, HTTP&#8230; y me bajo todo a una velocidad de 1 Mega por segundo.<\/p>\n<p>Antes siempre que tenia que bajarme algo del servidor en la universidad usaba sFTP (SSH), cosa que esta bien si se tratase de archivos privados ya que usa encriptaci\u00f3n, pero para el resto de casos es terrible, la velocidad es muy inferior. As\u00ed que qued\u00e9 encantado con la posibilidad de bajar archivos por HTTP o incluso de compartirlos, asi que hoy me he puesto a hacer una rapida b\u00fasqueda por el <a href=\"http:\/\/packages.gentoo.org\/\">portage de Gentoo<\/a> y he descubierto una peque\u00f1a maravilla: <a href=\"http:\/\/linux.bytesex.org\/misc\/webfs.html\">WebFS<\/a><\/p>\n<p>Mmmm&#8230;. estaba empezando a escribir sobre webfs cuando me he dado cuenta que mejor lo hago en <a href=\"http:\/\/www.gpltarragona.org\">GPL Tarragona<\/a>. Luego os pongo un link al art\u00edculo aqui \ud83d\ude09<\/p>\n<p><b>Actualizaci\u00f3n<\/b> Ya he escrito el art\u00edculo: <a href=\"http:\/\/www.gpltarragona.org\/node\/view\/257\">Compartir directorios con webfs<\/a>:<\/p>\n<p><a href=\"http:\/\/linux.bytesex.org\/misc\/webfs.html\">Webfs<\/a> es un servidor web muy simple que permite acceder a cualquier tipo de contenido est\u00e1tico, es decir, nada que ver con servidores web de la categor\u00eda de <a href=\"http:\/\/www.apache.org\/\">Apache<\/a>. Ni tan siquiera dispone de archivo de configuraci\u00f3n, todas sus funcionalidades se pueden controlar por par\u00e1metro. Entonces&#8230; \u00bfQu\u00e9 tiene de interesante webfs?<\/p>\n<p>\u00bfCuantas veces nos ha pasado que queremos pasar alg\u00fan 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\u00e1s de una ocasi\u00f3n y suele ser engorroso ponerte a configurar un servidor <a href=\"http:\/\/www.proftpd.org\/\">FTP<\/a> o <a href=\"http:\/\/www.samba.org\/\">Samba<\/a>. <\/p>\n<p>Es m\u00e1s, \u00bfCuantas 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\u00ed siempre hay 2 opciones:<\/p>\n<p>a) Le explicas que es un FTP y os bajais un cliente de FTP.<br \/>\nb) Bajas tu un cliente de FTP y pasas el archivo sin explicaciones \ud83d\ude1b<\/p>\n<p>En funci\u00f3n de quien es el usuario es muy probable que si se elige la opci\u00f3n a) al cabo de media hora acabemos saltando a la opci\u00f3n b). <\/p>\n<p>\u00bfEn que nos puede ayudar webfs? Vayamos por puntos:<\/p>\n<ol>\n<li> Puedes compartir cualquier directorio de tu sistema GNU\/Linux con un comando, por ejemplo:\n<pre>\r\nwebfsd -F -r \/home\/usuario\/peliculas -p 2000\r\n<\/pre>\n<p>Esto indica que no queremos que se ponga en segundo plano como demonio (-F), queremos compartir el directorio &#8220;\/home\/usuario\/peliculas&#8221; y debe escuchar por le puerto 2000. Para pararlo basta hacer ctrl+c. Si quitamos el -F, al ejecutar webfsd autom\u00e1ticamente nos quedar\u00e1 libre la terminal y se ejecutar\u00e1 en segundo plano, para pararlo tendremos que ejecutar &#8220;killall webfsd&#8221; o &#8220;kill <i>pid_webfsd<\/i>&#8220;.<\/p>\n<\/li>\n<li>\u00bfQue ordenador no tiene hoy en d\u00eda un navegador? \u00a1Pr\u00e1cticamente 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\/\n<p>Esto nos mostrar\u00e1 un listado de los directorios y ficheros que tenemos en &#8220;\/home\/usuario\/peliculas&#8221;, podremos elegir el fichero que queramos y descargarlo. Incluso podr\u00edamos usar gestores de descarga para poder resumir\/reanudar, como el wget:<\/p>\n<pre>\r\nwget -c http:\/\/192.168.0.33:2000\/accion\/ToyStory2.avi\r\n<\/pre>\n<p>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\u00e1s adelante, en el mismo directorio se vuelve a ejecutar wget pero con el modificador &#8220;-c&#8221; y as\u00ed completar\u00e1 el archivo que hab\u00edamos dejado a medias.<\/p>\n<\/li>\n<\/ol>\n<p>Alguien podr\u00eda decir: \u00a1Pero es que yo voy a pasar el archivo a trav\u00e9s de una red p\u00fablica donde hay m\u00e1s usuarios y no quiero que estos se aprovechen y accedan a lo que comparto! Hay soluci\u00f3n:<\/p>\n<pre>\r\nwebfsd -F -r \/home\/usuario\/peliculas -p 2000 -busuario:password\r\n<\/pre>\n<p>De esta forma cuando alguien intente acceder al servidor se le preguntar\u00e1 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).<\/p>\n<p>Es m\u00e1s, incluso es posible utilizar SSL y hacer que las comunicaciones est\u00e9n encriptadas. Con esto perderemos velocidad, pero ganamos en privacidad y mantenemos la flexibilidad. Esta caracter\u00edstica no he conseguido que funcione:<\/p>\n<pre>\r\nwebfsd -S -C \/etc\/apache2\/conf\/ssl\/server.crt -F -r .\/ -p 2000\r\n<\/pre>\n<p>Es necesario disponer de un certificado para que pueda realizar la encriptaci\u00f3n, estos certificados los podemos generar nosotros mismos con <a href=\"http:\/\/www.openssl.org\/\">OpenSSL<\/a>:<\/p>\n<pre>\r\nopenssl genrsa -out domainname.key 1024 \r\nopenssl req -new -key domainname.key -out domainname.csr \r\nopenssl x509 -req -days 36000 -in domainname.csr -signkey domainname.key -out domainname.crt\r\n<\/pre>\n<p>Con esto generamos primero una llave RSA no protegida por ning\u00fan password (si nos roban esto, podran desencriptar nuestras comunicaciones con esta llave o hacerse pasar por nosotros), a continuaci\u00f3n creamos la petici\u00f3n de certificado y finalmente creamos el certificado firmado por nosotros mismos (en sitios de comercio electr\u00f3nico los certificados suelen ser firmados por entidades certificadoras, las cuales cobran por hacer esto&#8230; aunque tb hay webs que firman certificados de prueba temporales como <a href=\"http:\/\/www.freessl.com\/\">FreeSSL<\/a>).<\/p>\n<p>Si intento acceder con Mozilla a &#8220;https:\/\/localhost:2000&#8221; me indica: &#8220;Mozilla and localhost cannot communicate securely because they have no common encryption algorithms&#8221;. Si alguien consigue hacerlo funcionar agradeceria que a\u00f1adiese algun comentario al art\u00edculo.<\/p>\n<p>\u00bfQu\u00e9 os parece webfs? \u00bfUtiliz\u00e1is alg\u00fan otro m\u00e9todo 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\u00e9todo:<\/p>\n<p>1) Tener un directorio que siempre es compartido, por ejemplo \/home\/usuario\/Desktop\/shared\/<br \/>\n2) Al iniciar la sesi\u00f3n en gnome se ejecuta autom\u00e1ticamente webfs: webfsd -r \/home\/usuario\/Desktop\/shared -p 2000<br \/>\n3) Hacer un nautilus script que permita compartir carpetas y lo que hara en realidad es un enlace simb\u00f3lico dentro de shared\/ que apunta al directorio que hemos indicado. As\u00ed podremos compartir varios directorios con una \u00fanica instancia de webfs. Tambi\u00e9n podriamos hacer que se a\u00f1adiese un emblema para marcar esa carpeta como compartida.<br \/>\n4) Para dejar de compartir una carpeta:<br \/>\n&nbsp;&nbsp;&nbsp;a) Hacer un nautilus script, vas a un directorio compartido, lo seleccionas y ejecutas el &#8220;descompartir&#8221;, el script borra el enlace simb\u00f3lico y quita el emblema.<br \/>\n&nbsp;&nbsp;&nbsp;b) El usuario puede borrar directamente el enlace de la carpeta shared\/. Esto implica que no se pueda quitar autom\u00e1ticamente el emblema en el caso de que se pueda implementar esto.<\/p>\n<p>La idea queda en el aire \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ayer me baje de los servidores de GPL Tarragona unos videos de unas jornadas de bulma que habiamos puesto a disposici\u00f3n de todos. Lo baje en la misma universidad, utilice wget ya que estan disponibles a trav\u00e9s del servidor web, es decir, HTTP&#8230; y me bajo todo a una velocidad de 1 Mega por segundo. &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=135\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Webfs: Compartir archivos por HTTP<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-135","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=135"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/135\/revisions"}],"predecessor-version":[{"id":1789,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/135\/revisions\/1789"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}