23 votos

¿Existe una aplicación de servidor SMB que no requiera acceso a root?

Estoy buscando una manera para mi HTC Hero (Android 2.1) para que pueda compartir el contenido de mi tarjeta SD y la memoria del teléfono a través de la red WiFi como una cuota de archivo de Windows regular. Me gustaría uno que no requiera que rootee mi teléfono, y estoy dispuesto a pagar por la aplicación adecuada para que no tenga que ser gratuita.

Estoy pensando en usar el servidor SMB y todo lo que he encontrado hasta ahora es:

  1. SambaAndroid que requiere acceso a root.
  2. androidsmb que es una "implementación en Java del servidor de archivos e impresoras compartidas en red SMB/CIFS para dispositivos Android" alojada en Google Code que no tiene documentación y no ha publicado ningún archivo.

¿Es técnicamente posible desarrollar un servidor SMB en Android que pueda ser instalado sin acceso Root?

14voto

neo Puntos 185

Como tu pregunta original sigue sin respuesta y yo me preguntaba lo mismo, aquí tienes la respuesta.

Respuesta corta: No, sin Root no es posible ejecutar un servidor SMB utilizando los puertos por defecto para que sea encontrado por los PCs de Windows.

Respuesta larga: SMB se ejecuta en los puertos 137-139 (UDP y TCP) utilizando NetBIOS o en los sistemas más nuevos (a partir de Windows Vista) directamente en el puerto TCP 445, donde en este último caso los nombres de los ordenadores se resuelven mediante el protocolo LLMNR (Link-local Multicast Name Resolution) que se ejecuta en el puerto UDP 5355. ¿Por qué es importante esto? Aplicaciones que no se ejecutan como Root no se puede enlazar con puertos no privilegiados (<1024). Es posible utilizar puertos alternativos para SMB, pero Windows está configurado para escuchar sólo los puertos predeterminados. Así que supongo que si usas Linux o un cliente SMB separado para Windows que permita conectarse a un servidor con un número de puerto personalizado, probablemente sea posible. Pero no es realmente una forma directa.

10voto

Lloyd Meinholz Puntos 1520

Aunque no sea posible ejecutar un servidor SMB sin Root o utilizando el reenvío de puertos Es posible ejecutar un servidor WebDAV sin Root para obtener un efecto similar.

Configurar un servidor WebDAV para Android

En mi Nexus 7 original, he instalado Servidor WebDAV La abrí, hice clic en el botón de inicio e inmediatamente pude ver mi /storage/sdcard en mi navegador web en la URL que muestra la aplicación, es decir http://192.168.x.y:8080

Tenga en cuenta que con WebDAV, también tiene la opción de seleccionar root (/) o DCIM así como SdCard como el WebDAV root .

Uso del servidor WebDAV a través del Explorador de Windows

A continuación, mapeé http://192.168.x.y:8080 como una unidad de red en el Explorador de Windows y pude acceder al contenido de mi unidad de almacenamiento, como si estuviera conectado a través de MTP, pero a través de una letra de unidad.

Lamentablemente, esta solución es increíblemente lenta.

Cada cambio de directorio tarda entre 6 y 20 segundos, al igual que el acceso a la mayoría de los archivos. Sin embargo, una vez que se accede a un archivo, éste se transfiere a una velocidad razonable (copiar un solo archivo de 42 MB en el Explorador de Windows llevó unos 60 segundos, es decir, 700 KB/s).

Así, WebDAV a través del Explorador de Windows está bien para descargar unos pocos archivos grandes cuya ubicación conoces, pero navegar o sincronizar un dispositivo entero de esta manera no es rápido. Sincronicé 1,75GB de datos en unos 6000 archivos y 400 directorios y tardé 10 horas, es decir, unos 50KB/s o 10 archivos/directorios por minuto de media.

Uso del servidor WebDAV a través de la línea de comandos de Windows

Incluso desde la línea de comandos, cada listado de directorios tarda entre 5 y 6 segundos, al igual que cualquier acceso a archivos. Copiar el mismo archivo de 42 MB desde la línea de comandos tardó unos 20 segundos, es decir, unos 2,1 MB/s.

Utilizar el servidor WebDAV a través de un navegador web

Sin embargo, la opción más rápida para WebDAV es utilizar el navegador web, directamente a través de la URL indicada. El cambio de directorio rara vez tarda más de un segundo y la descarga del mismo archivo de 42MB desde el navegador web tardó unos 12 segundos, es decir, unos 3,6MB/s.

La desventaja de utilizar el navegador web es que sólo muestra la fecha (no el tamaño ni el tipo) y no distingue entre archivos y directorios, por lo que si un archivo no tiene una extensión (o un directorio sí) puede no ser obvio si al hacer clic en un enlace te llevará a otra página web (para un directorio) o iniciará una descarga (para un archivo).

Advertencias

  • Por defecto, Windows limita el tamaño de las descargas de WebDAV a 50000000 bytes (47,6MB), aunque esto puede ser cambiado a través de un hack del registro ( FileSizeLimitInBytes en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters ) si sabes lo que estás haciendo.

  • El acceso a WebDAV no es seguro . Aunque se establezca una contraseña en el recurso compartido WebDAV, la conexión sigue siendo http no https , por lo que no está encriptado. Utiliza WebDAV sólo en una red wifi segura y desde luego no habilites el servidor WebDAV mientras estés en un cibercafé o en otra wifi no segura.

5voto

Max Puntos 121

El problema no es el servidor de samba, sino el hecho de que Windows puede acceder a un recurso compartido de samba sólo en el puerto 445, y en un Android no rooteado una App normal no puede escuchar en el puerto 445.

Pero puedes superar esto con un poco de mapeo de puertos TCP:

  1. Instalar un servidor samba en tu Android, y haz que escuche en un puerto como el 7777
  2. Instalar un software de reenvío de puertos TCP en algún lugar (yo lo instalé en un PC virtual)
  3. Configure el software de mapeo de puertos para que escuche las conexiones en el puerto 445, y reenvíe las conexiones a su Android en el puerto 7777
  4. Ahora puedes acceder a la carpeta compartida en este virtualPC, y obtendrás los datos del servidor samba instalado en Android (a través del portmapping)

He descrito todos los pasos en detalle aquí en mi blog http://techforpassion.blogspot.it/2013/12/Android-how-to-share-folder-over-wifi.html

He probado diferentes servidores samba, y la única aplicación gratuita que funciona en esta configuración se llama Servidor Samba

2voto

Bryan Denny Puntos 18960

Como alternativa, puedes ejecutar un servidor ftp en tu teléfono para acceder al contenido de tu tarjeta SD. Consulta SwiFTP .

1voto

Polsonby Puntos 11824

Puede que esté entendiendo mal, pero parece que necesitas un cliente SMB, no un servidor. Además, no necesitas acceso Root. Para usar SMB para transferir archivos a tu ordenador puedes usar Gestor de archivos ASTRO con el Complemento SMB , o hay Experto en archivos que también es gratuito.

También puede utilizar WebDAV en lugar de SMB con una aplicación como WebSharing .

Antes utilizaba una aplicación que con un software cliente en mi ordenador me permitía transferir archivos a través del explorador de archivos desde cualquier lugar a través de la web. No era una aplicación VNC completa. Tengo un nuevo teléfono y ahora por mi vida no puedo encontrar la aplicación.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X