Korzystanie z serwera SMB bez dostępu roota

18

Szukam sposobu dla mojego HTC Hero (Android 2.1), aby móc udostępniać zawartość mojej karty SD i pamięci telefonu przez sieć Wi-Fi jak zwykłe udostępnianie plików Windows. Chciałbym taki, który nie wymaga ode mnie rootowania telefonu i jestem gotów zapłacić za odpowiednią aplikację, aby nie musiała być darmowa.

Zastanawiam się nad użyciem serwera SMB i do tej pory znalazłem tylko:

  1. SambaAndroid, który wymaga dostępu do roota.
  2. androidsmb, który jest „implementacją Java serwera sieciowego SMB / CIFS i serwera udostępniania drukarek dla urządzeń z Androidem” hostowanego na Google Code, który nie ma dokumentacji i nie wydał żadnych plików.

Czy jest technicznie możliwe opracowanie serwera SMB na Androida, który można zainstalować bez dostępu do konta root?

Dzień
źródło
Użyłem Wifi Explorer( appbrain.com/app/wifi-file-explorer/... ) kilka razy i działa świetnie, nie wymaga rootowania . Nie jest to jednak SMB (i prawdopodobnie też nie jest FTP).
Joe Casadonte

Odpowiedzi:

12

Ponieważ na twoje pierwotne pytanie wciąż nie ma odpowiedzi i zastanawiałem się nad tym samym, oto odpowiedź.

Krótka odpowiedź: Nie, bez roota nie można uruchomić serwera SMB przy użyciu domyślnych portów, aby można go było znaleźć na komputerach z systemem Windows.

Długa odpowiedź: SMB działa na portach 137-139 (UDP i TCP) przy użyciu NetBIOS lub na nowszych systemach (od Windows Vista i nowszych) bezpośrednio na porcie TCP 445, gdzie w tym ostatnim przypadku nazwy komputerów są rozwiązywane przez LLMNR (lokalna multiemisja łącza) Name Resolution) protokół działający na porcie UDP 5355. Dlaczego jest to ważne? Aplikacje, które nie działają jako root, nie mogą łączyć się z nieuprzywilejowanymi portami (<1024). Możliwe jest użycie alternatywnych portów dla SMB, ale system Windows ma stałe połączenie tylko z domyślnymi. Sądzę więc, że jeśli używasz Linuksa lub osobnego klienta SMB dla Windows, który pozwala połączyć się z serwerem z niestandardowym numerem portu, prawdopodobnie jest to możliwe. Ale to nie jest tak naprawdę prosty sposób.

letmaik
źródło
Świetna odpowiedź po tak długim czasie. Dzięki. Teraz gdybym tylko pamiętał, dlaczego tego potrzebowałem ...;)
Dzień
3
Cóż, chciałem, bo jestem zbyt leniwy, aby podłączyć USB, aby uzyskać dostęp do karty SD: D
letmaik
Zastanawiam się, czy Windows poradzi sobie z \\your.ip:port...
Tobias Kienzler
10

Chociaż uruchomienie serwera SMB bez roota lub przekierowanie portów może być niemożliwe , możliwe jest uruchomienie serwera WebDAV bez rootowania w celu uzyskania podobnego efektu.

Konfigurowanie serwera Android WebDAV

Na moim magazynie Nexus 7 zainstalowałem serwer WebDAV , otworzyłem go, kliknąłem przycisk Start i od razu byłem w stanie zobaczyć mój /storage/sdcardfolder w przeglądarce internetowej pod adresem URL wyświetlanym przez aplikację, tj.http://192.168.x.y:8080

Zauważ, że w przypadku WebDAV masz również opcję wyboru Root (/) lub DCIM, a także SdCard jako root WebDAV .

Korzystanie z serwera WebDAV za pomocą Eksploratora Windows

Następnie zmapowałem http://192.168.x.y:8080jako Eksplorator Windows jako dysk sieciowy i mogłem uzyskać dostęp do zawartości mojego dysku pamięci, tak jakbym był podłączony przez MTP, ale za pomocą litery dysku.

Niestety, to rozwiązanie jest niewiarygodnie wolne.

Każda zmiana katalogu zajmuje od 6 do 20 sekund, podobnie jak dostęp do większości plików. Po uzyskaniu dostępu do pliku plik jest przesyłany z odpowiednią prędkością (kopiowanie pojedynczego pliku 42 MB w Eksploratorze Windows zajęło około 60 sekund, a więc 700 KB / s).

Dlatego WebDAV za pośrednictwem Eksploratora Windows jest odpowiedni do pobierania kilku dużych plików, których lokalizację znasz, ale przeglądanie lub synchronizowanie całego urządzenia w ten sposób nie jest szybkie. Zsynchronizowałem 1,75 GB danych w około 6000 plików i 400 katalogach i zajęło to 10 godzin, tj. Średnio około 50 KB / s lub średnio 10 plików / katalogów na minutę.

Korzystanie z serwera WebDAV za pośrednictwem wiersza polecenia systemu Windows

Nawet z wiersza poleceń każda lista katalogów zajmuje 5-6 sekund, podobnie jak każdy dostęp do pliku. Skopiowanie tego samego pliku 42 MB z wiersza polecenia zajęło około 20 sekund, czyli około 2,1 MB / s.

Korzystanie z serwera WebDAV za pośrednictwem przeglądarki internetowej

Najszybszą opcją dla WebDAV jest jednak użycie przeglądarki internetowej bezpośrednio pod podanym adresem URL. Zmiana katalogu rzadko zajmuje więcej niż sekundę, a pobranie tego samego pliku 42 MB z przeglądarki internetowej trwało około 12 sekund, czyli około 3,6 MB / s.

Minusem korzystania z przeglądarki internetowej jest to, że pokazuje tylko datę (bez rozmiaru lub typu) i nie czyni rozróżnienia między plikami i katalogami, więc jeśli plik nie ma rozszerzenia (lub katalogu), może to nie być oczywiste jeśli kliknięcie linku przeniesie Cię do innej strony internetowej (dla katalogu) lub rozpocznie pobieranie (dla pliku).

Ostrzeżenia

  • Domyślnie system Windows ogranicza rozmiar pobrań WebDAV do 50000000 bajtów (47,6 MB), ale można to zmienić poprzez włamanie do rejestru ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters), jeśli wiesz, co robisz.

  • Dostęp WebDAV nie jest bezpieczny . Nawet jeśli ustawisz hasło dla udziału WebDAV, połączenie nadal httpnie jest dostępne https, więc nie jest szyfrowane. Używaj WebDAV tylko w bezpiecznej sieci Wi-Fi i na pewno nie włączaj serwera WebDAV, gdy jesteś w kafejce internetowej lub innym niezabezpieczonym Wi-Fi.

Mark Booth
źródło
Ta metoda jest dość szybka na moim urządzeniu. Dziękuję Ci!
Cluster
Testowane na Samsung S10 + Windows 8.0. Działa w porządku.
Brethlosze
5

Problemem nie jest serwer samby, ale fakt, że Windows może uzyskać dostęp do udziału samby tylko na porcie 445, a na nierootowanym Androidzie normalna aplikacja nie może nasłuchiwać na porcie 445.

Możesz to jednak rozwiązać za pomocą mapowania portów TCP:

  1. Zainstaluj serwer samby na swoim Androidzie i pozwól mu nasłuchiwać na porcie takim jak 7777
  2. Zainstaluj gdzieś oprogramowanie do przekazywania portów TCP (zainstalowałem je na virtualPC)
  3. Skonfiguruj oprogramowanie do mapowania portów, aby nasłuchiwało połączeń na porcie 445, i przekieruj połączenia na Androida na porcie 7777
  4. Teraz możesz uzyskać dostęp do folderu współdzielonego na tym wirtualnym komputerze, a otrzymasz dane z serwera samby zainstalowanego na Androidzie (poprzez mapowanie portów)

Wszystkie kroki opisałem szczegółowo tutaj na moim blogu http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

Wypróbowałem inny serwer samby, a jedyna darmowa aplikacja działająca w tej konfiguracji to Samba Server

Max
źródło
Ciekawa propozycja, ale czy nie możesz wpisać czegoś takiego jak \\androids.ip:7777w pasku adresu eksploratora?
Tobias Kienzler
1
@tobias kienzler O ile mi wiadomo, to nie zadziała
Max
2

Alternatywnie możesz uruchomić serwer ftp w telefonie, aby uzyskać dostęp do zawartości karty SD. Sprawdź SwiFTP .

Bryan Denny
źródło
Drugi SwiFTP. Nie będziesz mógł zdejmować z niego żadnych plików bez rootowania, ale powinno to działać poprawnie na karcie SD.
Wstęgi
2

Obecnie ukończyłem aplikację ( na urządzenia nie zrootowane ) do udostępniania plików w sieci lokalnej. Moje wyciągnięte lekcje:

  • Możliwe jest uruchomienie serwera SMB na Androidzie bez dostępu do konta roota (na nieuprzywilejowanym porcie). Mac OS X łączy się z nim bez żadnych problemów (jeśli rozgłaszasz swój ip i port przez Bonjour). Ale Windows nie. Jak już powiedzieli inni użytkownicy, system Windows używa uprzywilejowanych portów do dostępu SMB. Jedynym sposobem, jaki znalazłem do łączenia się z systemem Windows, jest utworzenie karty sieciowej z pętlą zwrotną, jak wyjaśniono tutaj (nie ten sam cel, ale sam pomysł). Wreszcie myślę, że najbardziej przyjaznym dla użytkownika sposobem jest używanie WebDAV w systemie Windows . Nawet jeśli system Windows nie robi tego w sposób przyjazny dla użytkownika, ponieważ musisz ręcznie wpisać swój adres IP, a ja nie znalazłem sposobu, w jaki można go wykryć (proszę napisz do mnie, jeśli znasz).
  • W świecie Mac OS X protokół SMB jest wyraźnym zwycięzcą . Twój udział zostanie automatycznie wykryty przez Bonjour i magicznie pojawi się w Finderze. Dziwne jest to, że udziały WebDAV i FTP są ignorowane (nie są automatycznie montowane przez Finder), chociaż są obsługiwane przez Bonjour. Klienci zewnętrzni (np. Cyberduck) nie mają problemów z automatycznym wykrywaniem tych udziałów.
artkoenig
źródło
1

Mogę być nieporozumieniem, ale wygląda na to, że potrzebujesz klienta SMB, a nie serwera. Ponadto nie potrzebujesz dostępu do konta root. Aby użyć SMB do przesłania plików do komputera, możesz użyć Menedżera plików ASTRO z dodatkiem SMB lub istnieje File Expert, który jest również bezpłatny.

Możesz również użyć WebDAV zamiast SMB w aplikacji takiej jak WebSharing .

W przeszłości korzystałem z aplikacji, która z oprogramowaniem klienckim na moim komputerze pozwalała mi przesyłać pliki za pomocą eksploratora plików z dowolnego miejsca w sieci. To nie była pełna aplikacja VNC. Mam nowy telefon i teraz przez całe życie nie mogę znaleźć aplikacji.

Matt
źródło
Cześć, dziękuję za odpowiedź. Naprawdę chciałem mieć serwer w telefonie, aby mój (Ubuntu) komputer mógł wpychać na niego nowe pliki, gdy wrócę do domu, bez konieczności nawet wyjmowania telefonu z kieszeni. Wolę nie wymagać dodatkowego oprogramowania na PC, ale oczywiście serwer FTP lub WebDAV w telefonie również spełnia ten wymóg, więc wygląda na to, że File Expert wykona zadanie. Instaluję teraz, zgłoś dzięki
Dzień
Hmmm serwer FTP nie działa - kreator Ubuntu „Connect to Server” mówi „nieoczekiwany koniec strumienia”. Muszę iść do pracy, spróbuję ponownie później ta.
Dzień
Nie, to działa ... moja wina za pośpiech. To powinno dobrze wykonać zadanie, dzięki.
Dzień