Использование SMB-сервера без рут-доступа

18

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

Я думаю об использовании SMB-сервера, и все, что я нашел до сих пор:

  1. SambaAndroid, который требует root-доступа.
  2. androidsmb - это «реализация Java сетевого сервера общих файлов и принтеров SMB / CIFS для устройств Android», размещенная на Google Code, которая не имеет документации и не выпустила никаких файлов.

Возможно ли технически разработать 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) Протокол разрешения имен), который работает на UDP-порту 5355. Почему это важно? Приложения, не работающие от имени пользователя root, не могут привязываться к непривилегированным портам (<1024). Можно использовать альтернативные порты для SMB, но Windows жестко привязана к прослушиванию портов по умолчанию. Поэтому я думаю, что если вы используете Linux или отдельный SMB-клиент для Windows, который позволяет подключаться к серверу с пользовательским номером порта, это, вероятно, возможно. Но это не совсем прямой путь.

letmaik
источник
Отличный реальный ответ после всего этого времени. Благодарю. Теперь, если бы я только мог вспомнить, зачем мне это нужно ...;)
День
3
Ну, я хотел, потому что мне лень подключать USB для доступа к SD-карте: D
letmaik
Интересно, справится ли Windows с \\your.ip:port...
Тобиас Кинцлер
10

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

Настройка сервера Android WebDAV

На своем стоковом Nexus 7 я установил WebDAV Server , открыл его, нажал кнопку «Пуск» и сразу же смог увидеть свою /storage/sdcardпапку в своем веб-браузере по URL-адресу, отображаемому приложением, т.е.http://192.168.x.y:8080

Обратите внимание, что с WebDAV у вас также есть возможность выбрать Root (/) или DCIM, а также SdCard в качестве корня WebDAV .

Использование сервера WebDAV через Windows Explorer

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

К сожалению, это решение невероятно медленное.

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

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

Использование сервера WebDAV через командную строку Windows

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

Использование сервера WebDAV через веб-браузер

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

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

Предостережения

  • По умолчанию Windows ограничивает размер загрузок WebDAV до 50000000 байт (47,6 МБ), хотя это можно изменить с помощью взлома реестра ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters), если вы знаете, что делаете.

  • Доступ к WebDAV небезопасен . Даже если вы установили пароль на общий ресурс WebDAV, соединение по-прежнему httpотсутствует https, поэтому оно не шифруется. Используйте WebDAV только в защищенной сети Wi-Fi и, конечно, не включайте сервер WebDAV, пока вы находитесь в интернет-кафе или другом незащищенном Wi-Fi.

Марк Бут
источник
Этот метод довольно быстрый на моем устройстве. Спасибо!
Кластер
Проверено на Samsung S10 + Windows 8.0. Работает отлично.
Братлосз
5

Проблема не в сервере samba, а в том, что Windows может получить доступ к общему ресурсу samba только через порт 445, а на некорневом андроиде обычное приложение не может прослушивать порт 445.

Но вы можете преодолеть это с помощью некоторого сопоставления портов TCP:

  1. Установите сервер samba на свой андроид и заставьте его слушать порт 7777
  2. Установите где-нибудь программное обеспечение для переадресации портов TCP (я установил его на virtualPC)
  3. Настройте ПО для отображения портов для прослушивания подключений через порт 445 и переадресации подключений к вашему андроиду через порт 7777.
  4. Теперь вы можете получить доступ к общей папке на этом virtualPC и получить данные с сервера 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 - явный победитель . Ваша доля будет автоматически обнаружена Bonjour и волшебным образом появится в Finder. Странно, что общие ресурсы WebDAV и FTP игнорируются (не монтируются автоматически Finder), хотя они поддерживаются Bonjour. Сторонние клиенты (например, Cyberduck) не имеют проблем с автоматическим обнаружением этих общих ресурсов.
artkoenig
источник
1

Возможно, я неправильно понимаю, но похоже, что вам нужен SMB-клиент, а не сервер. Также вам не нужен root-доступ. Чтобы использовать SMB для передачи файлов на ваш компьютер, вы можете использовать ASTRO File Manager с надстройкой SMB , или есть File Expert, который также бесплатный.

Вы также можете использовать WebDAV вместо SMB с таким приложением, как WebSharing .

В прошлом я использовал приложение, которое с клиентским программным обеспечением позволяло мне передавать файлы через проводник из любой точки сети. Это не было полное приложение VNC. У меня новый телефон, и теперь я не могу найти приложение.

Matt
источник
Привет, спасибо за ответ, я действительно хотел, чтобы на телефоне был сервер, чтобы мой (Ubuntu) ПК мог загружать на него новые файлы, когда я прихожу домой, и мне даже не нужно вынимать телефон из кармана. Предпочитают не требовать дополнительного программного обеспечения на ПК, но, конечно, сервер FTP или WebDAV на телефоне также будет соответствовать этому требованию, поэтому, похоже, File Expert сделает эту работу. Я сейчас установлю,
День
Хммм, похоже, FTP-сервер не работает - мастер Ubuntu «Connect to Server» говорит «неожиданный конец потока». Приходится на работу, попробую позже, т.е
День
Нет, это работает ... моя вина за спешку. Это должно сделать работу хорошо, спасибо.
День