SMB-Server ohne Root-Zugriff verwenden

Ich suche nach einer Möglichkeit für mein HTC Hero (Android 2.1), damit ich den Inhalt meiner SD-Karte und des Telefonspeichers über das WiFi-Netzwerk wie eine normale Windows-Dateifreigabe freigeben kann. Ich hätte gerne eine, bei der ich mein Telefon nicht rooten muss, und bin bereit, für die richtige App zu bezahlen, damit sie nicht kostenlos sein muss.

Ich denke darüber nach, einen SMB-Server zu verwenden, und alles, was ich bisher gefunden habe, sind:

  1. SambaAndroid , das Root-Zugriff erfordert.
  2. androidsmb , ​​eine „Java-Implementierung des SMB/CIFS-Netzwerkdatei- und Druckerfreigabeservers für Android-Geräte“, die auf Google Code gehostet wird und über keine Dokumentation verfügt und keine Dateien veröffentlicht hat.

Ist es technisch überhaupt möglich, einen SMB-Server auf Android zu entwickeln, der ohne Root-Zugriff installiert werden kann?

Ich habe Wifi Explorer( appbrain.com/app/wifi-file-explorer/… ) ein paar Mal verwendet und es funktioniert großartig, kein Root erforderlich. Es ist jedoch kein SMB (und wahrscheinlich auch kein FTP).

Antworten (6)

Da Ihre ursprüngliche Frage immer noch nicht beantwortet ist und ich mich das gleiche gefragt habe, hier ist die Antwort.

Kurze Antwort: Nein, ohne Root ist es nicht möglich, einen SMB-Server über die Standardports zu betreiben, damit er von Windows-PCs gefunden wird.

Lange Antwort: SMB läuft entweder auf den Ports 137-139 (UDP und TCP) mit NetBIOS oder auf neueren Systemen (ab Windows Vista) direkt auf TCP-Port 445, wobei im letzteren Fall Computernamen durch die LLMNR (Link-local Multicast Name Resolution), das auf UDP-Port 5355 läuft. Warum ist das wichtig? Apps, die nicht als Root ausgeführt werden, können sich nicht an nicht privilegierte Ports (<1024) binden. Es ist möglich, alternative Ports für SMB zu verwenden, aber Windows ist fest verdrahtet, um nur auf die Standardports zu hören. Ich denke also, wenn Sie Linux oder einen separaten SMB-Client für Windows verwenden, der es ermöglicht, eine Verbindung zu einem Server mit einer benutzerdefinierten Portnummer herzustellen, ist dies wahrscheinlich möglich. Aber es ist nicht wirklich ein geradliniger Weg.

Großartig, eine tatsächliche Antwort nach all dieser Zeit. Danke. Wenn ich mich jetzt nur erinnern könnte, warum ich das brauchte ... ;)
Nun, ich wollte es, weil ich zu faul bin, den USB-Anschluss anzuschließen, um auf die SD-Karte zuzugreifen: D
Ich frage mich, ob Windows damit umgehen kann \\your.ip:port...

Während es möglicherweise nicht möglich ist, einen SMB-Server ohne Root auszuführen oder die Portweiterleitung zu verwenden , ist es möglich, einen WebDAV-Server ohne Root auszuführen, um einen ähnlichen Effekt zu erzielen.

Einrichten eines Android WebDAV-Servers

Auf meinem Stock Nexus 7 installierte ich WebDAV Server , öffnete ihn, klickte auf die Startschaltfläche und konnte sofort meinen /storage/sdcardOrdner in meinem Webbrowser unter der von der Anwendung angezeigten URL sehen, dhhttp://192.168.x.y:8080

Beachten Sie, dass Sie bei WebDAV auch die Möglichkeit haben, Root (/) oder DCIM sowie SdCard als WebDAV -Root auszuwählen .

Verwenden des WebDAV-Servers über den Windows Explorer

Ich habe es dann http://192.168.x.y:8080im Windows Explorer als Netzlaufwerk zugeordnet und konnte auf den Inhalt meines Speicherlaufwerks zugreifen, als wäre ich über MTP verbunden, aber über einen Laufwerksbuchstaben.

Leider ist diese Lösung unglaublich langsam.

Jeder Verzeichniswechsel dauert zwischen 6 und 20 Sekunden, ebenso wie der Zugriff auf die meisten Dateien. Sobald auf eine Datei zugegriffen wird, wird sie jedoch mit angemessener Geschwindigkeit übertragen (das Kopieren einer einzelnen 42-MB-Datei im Windows Explorer dauerte etwa 60 Sekunden, also 700 KB/s).

Daher ist WebDAV über Windows Explorer in Ordnung, um einige große Dateien herunterzuladen, deren Speicherort Sie kennen, aber das Durchsuchen oder Synchronisieren eines ganzen Geräts auf diese Weise ist nicht schnell. Ich habe 1,75 GB Daten in etwa 6000 Dateien und 400 Verzeichnissen synchronisiert und es dauerte 10 Stunden, dh etwa 50 KB/s oder 10 Dateien/Verzeichnisse pro Minute im Durchschnitt.

Verwenden des WebDAV-Servers über die Windows-Befehlszeile

Selbst von der Befehlszeile aus dauert jede Verzeichnisauflistung 5-6 Sekunden, ebenso jeder Dateizugriff. Das Kopieren derselben 42-MB-Datei über die Befehlszeile dauerte etwa 20 Sekunden, also etwa 2,1 MB/s.

Verwenden des WebDAV-Servers über einen Webbrowser

Die schnellste Option für WebDAV ist jedoch die Verwendung Ihres Webbrowsers direkt über die angegebene URL. Das Wechseln des Verzeichnisses dauert selten länger als eine Sekunde und das Herunterladen derselben 42-MB-Datei vom Webbrowser dauerte etwa 12 Sekunden, also etwa 3,6 MB/s.

Der Nachteil der Verwendung des Webbrowsers besteht darin, dass er nur das Datum anzeigt (keine Größe oder Art) und keinen Unterschied zwischen Dateien und Verzeichnissen macht. Wenn also eine Datei keine Erweiterung hat (oder ein Verzeichnis eine hat), ist dies möglicherweise nicht offensichtlich wenn Sie auf einen Link klicken, gelangen Sie zu einer anderen Webseite (bei einem Verzeichnis) oder starten einen Download (bei einer Datei).

Vorbehalte

  • Standardmäßig begrenzt Windows die Größe von WebDAV-Downloads auf 50000000 Bytes (47,6 MB), obwohl dies durch einen Registry-Hack ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) geändert werden kann, wenn Sie wissen, was Sie tun.

  • Der WebDAV-Zugriff ist nicht sicher . Auch wenn Sie auf der WebDAV-Freigabe ein Passwort festlegen, ist die Verbindung immer noch httpnicht https, also nicht verschlüsselt. Verwenden Sie WebDAV nur in einem sicheren WLAN-Netzwerk und aktivieren Sie auf keinen Fall den WebDAV-Server, während Sie sich in einem Internetcafé oder einem anderen ungesicherten WLAN befinden.

Diese Methode ist auf meinem Gerät ziemlich schnell. Danke schön!
Getestet auf Samsung S10 + Windows 8.0. Funktioniert gut.

Das Problem ist nicht der Samba-Server, sondern die Tatsache, dass Windows nur über Port 445 auf eine Samba-Freigabe zugreifen kann und auf einem nicht gerooteten Android eine normale App nicht auf Port 445 lauschen kann.

Sie können dies jedoch mit etwas TCP-Port-Mapping überwinden:

  1. Installieren Sie einen Samba-Server auf Ihrem Android und lassen Sie ihn auf einem Port wie 7777 lauschen
  2. Installieren Sie irgendwo eine TCP-Portweiterleitungssoftware (ich habe sie auf einem virtuellen PC installiert)
  3. Richten Sie die Portmapping-Software so ein, dass sie auf Port 445 auf Verbindungen lauscht und die Verbindungen auf Port 7777 an Ihr Android weiterleitet
  4. Jetzt können Sie auf den freigegebenen Ordner auf diesem virtuellen PC zugreifen und erhalten die Daten vom Samba-Server, der auf Android installiert ist (durch das Portmapping).

Ich habe alle Schritte hier in meinem Blog http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html ausführlich beschrieben

Ich habe verschiedene Samba-Server ausprobiert, und die einzige kostenlose App, die in dieser Konfiguration funktioniert, heißt Samba-Server

Interessanter Vorschlag, aber können Sie so etwas nicht \\androids.ip:7777in die Explorer-Adressleiste eingeben?
@tobias kienzler Meines Wissens wird das nicht funktionieren

Ich habe gerade eine App ( für nicht gerootete Geräte ) zum Teilen von Dateien im lokalen Netzwerk fertiggestellt. Meine Lektionen gelernt:

  • Es ist möglich, einen SMB-Server auf Android ohne Root-Zugriff (auf einem nicht privilegierten Port) auszuführen. Mac OS X stellt ohne Probleme eine Verbindung her (wenn Sie Ihre IP und Ihren Port über Bonjour übertragen). Aber Windows nicht. Wie bereits von anderen Benutzern gesagt, verwendet Windows "fest codierte" privilegierte Ports für den SMB-Zugriff. Die einzige Möglichkeit, die ich für die Verbindung mit Windows gefunden habe, ist das Erstellen eines Loopback-Netzwerkadapters, wie hier erklärt (nicht derselbe Zweck, aber die Idee). Schließlich denke ich, dass der benutzerfreundlichste Weg die Verwendung von WebDAV unter Windows ist . Auch wenn Windows es nicht benutzerfreundlich macht, weil man seine IP von Hand eingeben muss und ich keine Möglichkeit gefunden habe, wie man sie herausfinden könnte (bitte schreibt mir, falls ihr eine kennt).
  • In der Welt von Mac OS X ist das SMB-Protokoll ein klarer Gewinner . Ihre Freigabe wird von Bonjour automatisch erkannt und erscheint auf magische Weise im Finder. Seltsamerweise werden WebDAV- und FTP-Freigaben ignoriert (nicht automatisch vom Finder gemountet), obwohl sie von Bonjour unterstützt werden. Clients von Drittanbietern (z. B. Cyberduck) haben keine Probleme mit der automatischen Erkennung dieser Freigaben.

Alternativ können Sie einen FTP-Server auf Ihrem Telefon ausführen, um Zugriff auf den Inhalt Ihrer SD-Karte zu erhalten. Sehen Sie sich SwiFTP an .

Ich zweite SwiFTP. Sie können keine Dateien vom Telefon entfernen, ohne root zu sein, aber es sollte für die SD-Karte gut funktionieren.

Ich verstehe das vielleicht falsch, aber es hört sich so an, als ob Sie einen SMB-Client und keinen Server benötigen. Außerdem benötigen Sie keinen Root-Zugriff. Um SMB zum Übertragen von Dateien auf Ihren Computer zu verwenden, können Sie ASTRO File Manager mit dem SMB-Addon verwenden , oder es gibt File Expert , das ebenfalls kostenlos ist.

Sie können auch WebDAV anstelle von SMB mit einer App wie WebSharing verwenden .

In der Vergangenheit habe ich eine App verwendet, die es mir mit Client-Software auf meinem Computer ermöglichte, Dateien über den Datei-Explorer von überall über das Internet zu übertragen. Es war keine vollständige VNC-App. Ich habe ein neues Handy bekommen und jetzt kann ich die App für mein ganzes Leben nicht finden.

Hallo, danke für die Antwort, ich wollte unbedingt einen Server auf dem Telefon, damit mein (Ubuntu-) PC neue Dateien darauf schieben kann, wenn ich nach Hause komme, ohne dass ich das Telefon auch nur aus der Tasche nehmen muss. Bevorzugen Sie keine zusätzliche Software auf dem PC, aber natürlich würde auch ein FTP- oder WebDAV-Server auf dem Telefon diese Anforderung erfüllen, also sieht es so aus, als würde File Expert die Arbeit erledigen. Ich installiere jetzt und melde mich wieder, danke
Hmmm, der FTP-Server scheint nicht zu funktionieren - der Ubuntu-Assistent "Mit Server verbinden" sagt "unerwartetes Ende des Streams". Muss zur Arbeit, werde es später nochmal versuchen ta.
Nein, es funktioniert ... meine Schuld für die Eile. Das sollte gut funktionieren, danke.