Utilizzo del server SMB senza accesso root


18

Sto cercando un modo per il mio HTC Hero (Android 2.1) in modo da poter condividere i contenuti della mia scheda SD e la memoria del telefono sulla rete WiFi come una normale condivisione di file di Windows. Vorrei uno che non mi richiedesse di eseguire il root del mio telefono e sono disposto a pagare per l'app giusta in modo che non debba essere gratuita.

Sto pensando di utilizzare il server SMB e tutto quello che ho trovato finora sono:

  1. SambaAndroid che richiede l'accesso come root.
  2. androidsmb che è "un'implementazione Java del file di rete SMB / CIFS e del server di condivisione stampante per dispositivi Android" ospitato su Google Code che non ha documentazione e non ha rilasciato alcun file.

È anche tecnicamente possibile sviluppare un server SMB su Android che può essere installato senza accesso root?


Ho usato Wifi Explorer( appbrain.com/app/wifi-file-explorer/… ) alcune volte e funziona benissimo, non è richiesto il root. Tuttavia, non è SMB (e probabilmente non è neanche FTP).
Joe Casadonte,

Risposte:


12

Poiché la tua domanda originale non ha ancora ricevuto risposta e mi chiedevo lo stesso, ecco la risposta.

Risposta breve: No, senza root non è possibile eseguire un server SMB utilizzando le porte predefinite in modo che venga trovato dai PC Windows.

Risposta lunga: SMB può essere eseguito sulle porte 137-139 (UDP e TCP) utilizzando NetBIOS o su sistemi più recenti (da Windows Vista in poi) direttamente sulla porta TCP 445 dove in quest'ultimo caso i nomi dei computer vengono risolti da LLMNR (Link-local Multicast Protocollo) che funziona sulla porta UDP 5355. Perché è importante? Le app che non funzionano come root non possono essere associate a porte non privilegiate (<1024). È possibile utilizzare porte alternative per SMB ma Windows è cablato per ascoltare solo quelle predefinite. Quindi immagino che se si utilizza Linux o un client SMB separato per Windows che consente di connettersi a un server con un numero di porta personalizzato, è probabilmente possibile. Ma non è davvero un modo semplice.


Ottima risposta effettiva dopo tutto questo tempo. Grazie. Se solo potessi ricordare perché avevo bisogno di questo ...;)
Giorno

3
Beh, lo volevo perché sono troppo pigro per collegare l'USB per accedere alla scheda SD: D
letmaik

Mi chiedo se Windows possa farcela \\your.ip:port...
Tobias Kienzler,

10

Mentre potrebbe non essere possibile eseguire un server SMB senza root o utilizzare il port forwarding , è possibile eseguire un server WebDAV senza root per un effetto simile.

Configurazione di un server WebDAV Android

Sul mio Nexus 7 di serie, ho installato WebDAV Server , l'ho aperto, ho fatto clic sul pulsante Start e sono stato immediatamente in grado di vedere la mia /storage/sdcardcartella nel mio browser Web all'URL visualizzato dall'applicazione, ad es.http://192.168.x.y:8080

Nota che con WebDAV hai anche la possibilità di selezionare Root (/) o DCIM e SdCard come root WebDAV .

Utilizzo del server WebDAV tramite Esplora risorse

Ho quindi mappato http://192.168.x.y:8080come unità di rete in Esplora risorse e ho potuto accedere al contenuto dell'unità di archiviazione, proprio come se fossi collegato tramite MTP, ma tramite una lettera di unità.

Purtroppo, questa soluzione è incredibilmente lenta.

Ogni cambio di directory richiede tra 6 e 20 secondi, così come l'accesso alla maggior parte dei file. Tuttavia, una volta che si accede a un file, questo viene trasferito a una velocità ragionevole (la copia di un singolo file da 42 MB in Esplora risorse ha richiesto circa 60 secondi, quindi 700 KB / s).

Pertanto WebDAV tramite Esplora risorse è OK per il download di alcuni file di grandi dimensioni di cui si conosce la posizione, ma la navigazione o la sincronizzazione di un intero dispositivo in questo modo non è rapida. Ho sincronizzato 1,75 GB di dati in circa 6000 file e 400 directory e ci sono volute 10 ore, vale a dire circa 50 KB / se 10 file / dir al minuto in media.

Utilizzo del server WebDAV tramite la riga di comando di Windows

Anche dalla riga di comando, ogni elenco di directory richiede 5-6 secondi, così come qualsiasi accesso ai file. La copia dello stesso file da 42 MB dalla riga di comando ha richiesto circa 20 secondi, quindi circa 2,1 MB / s.

Utilizzo del server WebDAV tramite un browser Web

L'opzione più veloce per WebDAV è utilizzare il tuo browser Web, direttamente tramite l'URL indicato. La modifica della directory richiede raramente più di un secondo e il download dello stesso file da 42 MB dal browser Web richiede circa 12 secondi, quindi circa 3,6 MB / s.

L'aspetto negativo dell'utilizzo del browser Web è che mostra solo la data (nessuna dimensione o tipo) e non fa alcuna distinzione tra file e directory, quindi se un file non ha un'estensione (o una directory), potrebbe non essere ovvio se facendo clic su un collegamento si accede a un'altra pagina Web (per una directory) o si avvia un download (per un file).

Avvertenze

  • Per impostazione predefinita, Windows limita la dimensione dei download di WebDAV a 50000000 byte (47,6 MB), anche se questo può essere modificato tramite un hack del registro ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) se sai cosa stai facendo.

  • L'accesso a WebDAV non è sicuro . Anche se si imposta una password sulla condivisione WebDAV, la connessione è ancora httpnon è https, quindi non è crittografato. Usa WebDAV solo su una rete Wi-Fi sicura e certamente non abilita il server WebDAV mentre ti trovi in ​​un internet café o altri wifi non sicuri.


Questo metodo è piuttosto veloce sul mio dispositivo. Grazie!
Cluster

Testato su Samsung S10 + Windows 8.0. Funziona bene.
Brethlosze,

5

Il problema non è il server samba, ma il fatto che Windows può accedere a una condivisione samba solo sulla porta 445 e su un Android non rootato un'app normale non può ascoltare sulla porta 445.

Ma puoi superarlo con un po 'di mappatura delle porte TCP:

  1. Installa un server samba sul tuo Android e fallo ascoltare su una porta come 7777
  2. Installa un software di port forwarding TCP da qualche parte (l'ho installato su un virtualPC)
  3. Configura il software di portmapping per ascoltare le connessioni sulla porta 445 e inoltrare le connessioni al tuo Android sulla porta 7777
  4. Ora puoi accedere alla cartella condivisa su questo VirtualPC e otterrai i dati dal server samba installato su Android (tramite il portmapping)

Ho descritto tutti i passaggi in dettaglio qui sul mio blog http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

Ho provato diversi server samba e l'unica app gratuita che funziona in questa configurazione si chiama Samba Server


Proposta interessante, ma non puoi inserire qualcosa come \\androids.ip:7777nella barra degli indirizzi di Explorer?
Tobias Kienzler,

1
@tobias kienzler Per quanto ne so, questo non funzionerà
Max

2

In alternativa, è possibile eseguire un server ftp sul telefono per accedere al contenuto della scheda SD. Dai un'occhiata a SwiFTP .


Secondo SwiFTP. Non sarai in grado di rimuovere alcun file dal telefono utilizzandolo senza essere root, ma dovrebbe funzionare bene per la scheda SD.
Webs,

2

Al momento ho terminato un'app ( per dispositivi non rootati ) per la condivisione di file nella rete locale. Le mie lezioni apprese:

  • È possibile eseguire un server SMB su Android senza accesso root (su porta non privilegiata). Mac OS X si collega ad esso senza problemi (se trasmetti il ​​tuo ip e la tua porta tramite Bonjour). Ma Windows non lo fa. Come già detto da altri utenti, Windows utilizza porte privilegiate "hardcoded" per l'accesso SMB. L'unico modo che ho trovato per la connessione a Windows è la creazione di una scheda di rete loopback come spiegato qui (non lo stesso scopo, ma l'idea). Infine, penso che il modo più facile da usare sia WebDAV su Windows . Anche se Windows non lo rende facile da usare, perché devi inserire il tuo IP a mano e non ho trovato un modo per scoprirlo (per favore lasciami un messaggio, se ne conosci uno).
  • Nel mondo di Mac OS X il protocollo SMB è un chiaro vincitore . La tua condivisione verrà scoperta automaticamente da Bonjour e apparirà magicamente nel Finder. È strano che le condivisioni WebDAV e FTP vengano ignorate (non montate automaticamente da Finder), sebbene siano supportate da Bonjour. I client di terze parti (ad esempio Cyberduck) non hanno problemi con il rilevamento automatico di queste condivisioni.

1

Potrei essere frainteso ma sembra che tu abbia bisogno di un client SMB, non di un server. Inoltre, non è necessario l'accesso root. Per usare SMB per trasferire file sul tuo computer puoi usare ASTRO File Manager con il componente aggiuntivo SMB , oppure c'è File Expert che è anche gratuito.

Puoi anche utilizzare WebDAV anziché SMB con un'app come WebSharing .

In passato utilizzavo un'app che con il software client sul mio computer mi permetteva di trasferire file tramite Esplora file da qualsiasi parte del Web. Non era un'app VNC completa. Ho un nuovo telefono e ora per la vita non riesco a trovare l'app.


Ciao grazie per la risposta, volevo davvero un server al telefono in modo che il mio PC (Ubuntu) potesse inserire nuovi file quando torno a casa senza che io debba nemmeno togliermi il telefono di tasca. Preferisco non richiedere software aggiuntivo su PC, ma ovviamente un server FTP o WebDAV sul telefono soddisferebbe anche tale requisito, quindi sembra che File Expert farà il lavoro. Sto installando ora riferirò grazie
Giorno

Hmmm il server FTP non sembra funzionare - la procedura guidata "Connetti al server" di Ubuntu dice "fine imprevista del flusso". Devo andare a lavorare, ci riproverò più tardi ta.
Giorno

No, funziona ... colpa mia per la fretta. Questo dovrebbe fare bene il lavoro grazie.
Giorno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.