Використання SMB-сервера без кореневого доступу


18

Я шукаю спосіб для свого HTC Hero (Android 2.1), щоб я міг поділитися вмістом моєї SD-карти та пам'яті телефону через мережу WiFi, як звичайна спільна програма файлів Windows. Мені б хотілося, щоб він не вимагав корінгового зв’язку телефону, і я готовий заплатити за правильний додаток, тому він не повинен бути безкоштовним.

Я думаю про використання SMB-сервера, і все, що я знайшов поки що:

  1. SambaAndroid, який потребує кореневого доступу.
  2. androidsmb - це "реалізація Java мережевого файлу SMB / CIFS та сервера спільного використання принтера для пристроїв Android", розміщеного в коді Google, який не має документації та не видав жодних файлів.

Чи навіть технічно можливо розробити SMB-сервер на Android, який можна встановити без кореневого доступу?


Я декілька разів використовував Wifi Explorer( appbrain.com/app/wifi-file-explorer/… ), і він працює чудово, не вимагаючи кореня. Це не SMB (хоча це, мабуть, і не FTP).
Джо Касадонте

Відповіді:


12

Оскільки на ваше первісне запитання досі не відповіли, і я задався питанням, ось відповідь

Коротка відповідь: Ні, без кореня неможливо запустити SMB-сервер за допомогою портів за замовчуванням, щоб його знайшли ПК на Windows.

Довга відповідь: SMB або працює на портах 137-139 (UDP і TCP), використовуючи NetBIOS, або в нових системах (від Windows Vista і далі) безпосередньо на TCP-порту 445, де в останньому випадку імена комп'ютерів вирішуються LLMNR (Link-local Multicast Протокол Name Resolution), який працює на порту UDP 5355. Чому це важливо? Програми, що не працюють як root, не можуть прив'язуватися до непривілейованих портів (<1024). Можна використовувати альтернативні порти для SMB, але Windows провідний, щоб просто слухати типові. Тож я думаю, якщо ви використовуєте Linux або окремий клієнт SMB для Windows, який дозволяє підключитися до сервера зі спеціальним номером порту, можливо, це можливо. Але це насправді не прямолінійний шлях.


Чудова реальна відповідь після всього цього часу. Спасибі. Тепер, коли б тільки я міг пригадати, навіщо мені це потрібно ...;)
День

3
Ну, я хотів цього, бо я лінивий підключати USB до доступу до SD-карти: D
letmaik

Цікаво, чи Windows може впоратися з \\your.ip:port...
Тобіас Кінцлер

10

Хоча можливо запустити сервер SMB без кореня або використовувати переадресацію портів , можливо, запустити сервер WebDAV без кореня для подібного ефекту.

Налаштування сервера Android WebDAV

На своєму запасі Nexus 7 я встановив сервер WebDAV , відкрив його, натиснув на кнопку запуску і одразу зміг побачити свою /storage/sdcardпапку у своєму веб-браузері за URL-адресою, що відображається програмою, тобтоhttp://192.168.x.y:8080

Зауважте, що за допомогою WebDAV ви також можете вибрати Root (/) або DCIM , а також SdCard як корінь WebDAV .

Використання сервера WebDAV через Провідник Windows

Потім я склав карту http://192.168.x.y:8080як мережевий накопичувач у Windows Explorer і міг отримати доступ до вмісту мого накопичувача так само, як якщо б я був підключений через MTP, але через літеру диска.

На жаль, це рішення неймовірно повільне.

Кожна зміна каталогу займає від 6 до 20 секунд, як і доступ до більшості файлів. Після доступу до файлу він передається з розумною швидкістю (копіювання одного файлу 42 Мб у Windows Explorer зайняло близько 60 секунд, тому 700 КБ / с).

Таким чином, WebDAV за допомогою Провідника Windows гаразд для завантаження кількох великих файлів, розташування яких ви знаєте, але перегляд чи синхронізація цілого пристрою таким чином не є швидким. Я синхронізував 1,75 ГБ даних у близько 6000 файлів і 400 каталогів, і це зайняло 10 годин, тобто в середньому близько 50 КБ / с або 10 файлів / бруду в хвилину.

Використання сервера WebDAV через командний рядок Windows

Навіть з командного рядка кожен перелік каталогів займає 5-6 секунд, як і будь-який доступ до файлів. Копіювання того ж 42MB-файлу з командного рядка зайняло близько 20 секунд, тобто близько 2,1 Мб / с.

Використання сервера WebDAV через веб-браузер

Найшвидший варіант для WebDAV - це використання веб-браузера, безпосередньо через вказану URL-адресу. Зміна каталогів рідко займає більше секунди, а завантаження того самого 42 МБ файлу з веб-браузера зайняло близько 12 секунд, тобто близько 3,6 МБ / с.

Недоліком використання веб-браузера є те, що він показує лише дату (без розміру чи типу) і не робить різниці між файлами та каталогами, тому якщо файл не має розширення (або каталог), то це може бути не очевидно якщо натиснути на посилання, ви перейдете на іншу веб-сторінку (для каталогу) або почніть завантаження (для файлу).

Коваджі

  • За замовчуванням Windows обмежує розмір завантажень WebDAV до 50000000 байт (47,6 МБ), хоча це можна змінити через злом реєстру ( FileSizeLimitInBytesв HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters), якщо ви знаєте, що ви робите.

  • Доступ до WebDAV не захищено . Навіть якщо ви встановите пароль для спільної доступу до WebDAV, з'єднання все ще httpне встановлено https, тому воно не шифрується. Використовуйте WebDAV лише в захищеній мережі Wi-Fi і, звичайно, не вмикайте сервер WebDAV, поки ви перебуваєте в Інтернет-кафе або іншому незахищеному Wi-Fi.


Цей метод досить швидкий на моєму пристрої. Дякую!
Кластер

Тестується на Samsung S10 + Windows 8.0. Добре працює.
Brethlosze

5

Проблема полягає не в сервері samba, а в тому, що Windows може отримати доступ до спільної частки samba лише на порту 445, а на не вкоріненому андроїді звичайний додаток не може слухати порт 445.

Але ви можете подолати це за допомогою деякого відображення TCP-портів:

  1. Встановіть сервер samba на андроїд і змусьте його прослуховувати порт, як 7777
  2. Встановити програмне забезпечення для переадресації портів TCP десь (я встановив його на virtualPC)
  3. Налаштуйте програмне забезпечення для створення портів для прослуховування з'єднань на порт 445 та переадресуйте підключення до свого Android на порт 7777
  4. Тепер ви можете отримати доступ до спільної папки на цьому віртуальному ПК, і ви отримаєте дані з Samba-сервера, встановленого на android (через порт-карти)

Я детально описав усі кроки тут у своєму блозі http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

Я спробував різні сервери samba, і єдиний безкоштовний додаток, який працює в цій конфігурації, називається Samba Server


Цікава пропозиція, але чи не можете ви ввести щось подібне \\androids.ip:7777до адресного рядка провідника?
Тобіас Кіенцлер

1
@tobias kienzler Наскільки мені відомо, це не вийде
Макс

2

Крім того, ви можете запустити ftp-сервер на своєму телефоні, щоб отримати доступ до вмісту вашої SD-карти. Перевірте SwiFTP .


Я другий SwiFTP. Ви не зможете знімати файли з телефону, використовуючи його, не використовуючи root, але це буде добре працювати на SD-карті.
Веб

2

Наразі я закінчив додаток ( для не вкорінених пристроїв ) для обміну файлами в локальній мережі. Мої уроки:

  • Можна запустити SMB-сервер на Android без кореневого доступу (на непривілейованому порту). Mac OS X підключається до нього без проблем (якщо ви транслюєте ip та порт через Bonjour). Але Windows не роблять. Як уже говорили інші користувачі, Windows використовує привілейовані порти з жорстким кодом для доступу до SMB. Єдиний спосіб, який я знайшов для з'єднання з Windows, - це створення мережевого адаптера для зворотного зв'язку, як пояснено тут (не та сама мета, а ідея). Нарешті, я думаю, що найбільш зручним для користувачів способом є використання WebDAV у Windows . Навіть якщо Windows робить це не зручним для користувачів, тому що ви повинні ввести свій ip вручну, і я не знайшов способу, як це можна було б виявити (будь ласка, опустіть мені рядок, якщо ви знаєте його).
  • У світі Mac OS X протокол SMB є явним переможцем . Ваша частка буде автоматично виявлена ​​Бонжуром і магічно з'явиться у Finder. Дивно, що акції WebDAV та FTP ігноруються (не встановлюються автоматично Finder), хоча вони підтримуються Bonjour. Сторонні клієнти (наприклад, Cyberduck) не мають проблем з автоматичним відкриттям цих акцій.

1

Я можу нерозуміти, але це здається, що вам потрібен SMB-клієнт, а не сервер. Крім того, вам не потрібен кореневий доступ. Щоб використовувати SMB для перенесення файлів на комп'ютер, ви можете скористатися ASTRO File Manager з додатком SMB , або там також є File Expert, який також безкоштовний.

Ви також можете використовувати WebDAV замість SMB з таким додатком, як WebSharing .

Раніше я використовував додаток, який із клієнтським програмним забезпеченням на моєму комп’ютері дозволяв мені передавати файли через провідник файлів з будь-якої точки Інтернету. Це не був повний додаток VNC. У мене з’явився новий телефон, і тепер я все життя не можу знайти додаток.


Привіт, спасибі за відповідь, я дуже хотів, щоб сервер на телефоні, щоб мій (Ubuntu) ПК міг надсилати на нього нові файли, коли я приїжджаю додому, не маючи навіть брати телефон з кишені. Віддайте перевагу не вимагати додаткового програмного забезпечення на ПК, але, звичайно, FTP або WebDAV-сервер на телефоні також відповідатиме цій вимозі, тому схоже, що File Expert зробить цю роботу. Встановлюю зараз, звітуватиму дякую
День

Гмм, схоже, FTP-сервер не працює - майстер Ubuntu "Підключитися до сервера" говорить про "несподіваний кінець потоку". Доведеться йти на роботу, спробуємо знову пізніше та.
День

Ні, це не працює ... моя провина в тому, щоб кинутися. Це повинно зробити роботу прекрасно спасибі.
День
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.