23 votes

Utilisation d'un serveur SMB sans accès à la racine

Je cherche un moyen pour mon HTC Hero (Android 2.1) de partager le contenu de ma carte SD et la mémoire du téléphone sur le réseau WiFi comme un partage de fichiers Windows ordinaire. Je voudrais une solution qui ne nécessite pas de Root mon téléphone, et je suis prêt à payer pour la bonne application afin qu'elle ne soit pas nécessairement gratuite.

J'envisage d'utiliser un serveur SMB et tout ce que j'ai trouvé jusqu'à présent sont :

  1. SambaAndroid qui nécessite un accès Root.
  2. androïdesmb qui est une "implémentation Java du serveur de partage de fichiers et d'imprimantes en réseau SMB/CIFS pour les appareils Android" hébergée sur Google Code qui n'a pas de documentation et n'a publié aucun fichier.

Est-il même techniquement possible de développer un serveur SMB sur Android qui peut être installé sans accès Root ?

14voto

letmaik Points 245

Comme votre question initiale n'a toujours pas reçu de réponse et que je me suis posé la même question, voici la réponse.

Réponse courte : Non, sans Root, il n'est pas possible de faire fonctionner un serveur SMB en utilisant les ports par défaut pour qu'il soit trouvé par les PC Windows.

Réponse longue : SMB fonctionne soit sur les ports 137-139 (UDP et TCP) en utilisant NetBIOS, soit sur les systèmes plus récents (à partir de Windows Vista) directement sur le port TCP 445. Dans ce dernier cas, les noms d'ordinateurs sont résolus par le protocole LLMNR (Link-local Multicast Name Resolution) qui fonctionne sur le port UDP 5355. Pourquoi est-ce important ? Les applications ne fonctionnent pas en tant que Root ne peut pas se lier à des ports non privilégiés (<1024). Il est possible d'utiliser d'autres ports pour SMB, mais Windows est câblé pour n'écouter que les ports par défaut. Je suppose donc que si vous utilisez Linux ou un client SMB distinct pour Windows qui permet de se connecter à un serveur avec un numéro de port personnalisé, c'est probablement possible. Mais ce n'est pas vraiment un moyen direct.

10voto

Lloyd Meinholz Points 1520

Bien qu'il ne soit pas possible de exécuter un serveur SMB sans Root o en utilisant le transfert de port Il est possible de faire fonctionner un serveur WebDAV sans Root pour un effet similaire.

Configuration d'un serveur Android WebDAV

Sur mon Nexus 7 de base, j'ai installé Serveur WebDAV Je l'ai ouvert, j'ai cliqué sur le bouton de démarrage et j'ai pu immédiatement voir mon /storage/sdcard dans mon navigateur web à l'URL affichée par l'application, c'est à dire http://192.168.x.y:8080

Notez qu'avec WebDAV, vous avez également la possibilité de sélectionner Racine (/) o DCIM ainsi que SdCard comme le WebDAV Racine .

Utilisation du serveur WebDAV via l'Explorateur Windows

J'ai ensuite cartographié http://192.168.x.y:8080 comme un lecteur réseau dans l'Explorateur Windows et je pouvais accéder au contenu de mon disque de stockage, comme si j'étais connecté via MTP, mais par une lettre de lecteur.

Malheureusement, cette solution est incroyablement lente.

Chaque changement de répertoire prend entre 6 et 20 secondes, tout comme l'accès à la plupart des fichiers. Mais une fois qu'un fichier est accessible, il est transféré à une vitesse raisonnable (la copie d'un seul fichier de 42 Mo dans l'Explorateur Windows a pris environ 60 secondes, soit 700 Ko/s).

Ainsi, WebDAV via l'Explorateur Windows est parfait pour télécharger quelques gros fichiers dont vous connaissez l'emplacement, mais la navigation ou la synchronisation d'un appareil entier de cette façon n'est pas rapide. J'ai synchronisé 1.75GB de données dans environ 6000 fichiers et 400 répertoires et cela a pris 10 heures, c'est-à-dire environ 50KB/s ou 10 fichiers/dossiers par minute en moyenne.

Utilisation du serveur WebDAV via la ligne de commande Windows

Même à partir de la ligne de commande, chaque liste de répertoire prend 5 à 6 secondes, tout comme l'accès aux fichiers. La copie du même fichier de 42 Mo à partir de la ligne de commande prend environ 20 secondes, soit environ 2,1 Mo/s.

Utilisation du serveur WebDAV via un navigateur web

L'option la plus rapide pour WebDAV est cependant d'utiliser votre navigateur web, directement via l'URL indiquée. Le changement de répertoire prend rarement plus d'une seconde et le téléchargement du même fichier de 42 Mo depuis le navigateur web a pris environ 12 secondes, soit environ 3,6 Mo/s.

L'inconvénient de l'utilisation du navigateur web est qu'il n'affiche que la date (pas la taille ni le type) et ne fait aucune distinction entre les fichiers et les répertoires. Ainsi, si un fichier n'a pas d'extension (ou si un répertoire en a une), il n'est pas toujours évident de savoir si un clic sur un lien vous mènera à une autre page web (pour un répertoire) ou lancera un téléchargement (pour un fichier).

Avertissements

  • Par défaut, Windows limite la taille des téléchargements WebDAV à 50000000 octets (47,6MB), bien que cette limite puisse être modifiée. modifié par un piratage du registre ( FileSizeLimitInBytes en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters ) si vous savez ce que vous faites.

  • L'accès WebDAV n'est pas sécurisé . Même si vous définissez un mot de passe sur le partage WebDAV, la connexion est encore http no https Il n'est donc pas crypté. N'utilisez WebDAV que sur un réseau wifi sécurisé. et n'activez certainement pas le serveur WebDAV lorsque vous êtes dans un cybercafé ou un autre réseau wifi non sécurisé.

5voto

Max Points 151

Le problème n'est pas le serveur samba, mais le fait que Windows ne peut accéder à un partage samba que sur le port 445, et que sur un Android non rooté, une application normale ne peut pas écouter sur le port 445.

Mais vous pouvez surmonter ce problème avec un mappage de port TCP :

  1. Installer un serveur samba sur votre Android, et faites-lui écouter sur un port comme 7777
  2. Installez un logiciel de transfert de port TCP quelque part (je l'ai installé sur un PC virtuel).
  3. Configurez le logiciel de mappage de port pour qu'il écoute les connexions sur le port 445 et qu'il transfère les connexions vers votre Android sur le port 7777.
  4. Maintenant vous pouvez accéder au dossier partagé sur ce PC virtuel, et vous obtiendrez les données du serveur samba installé sur Android (via le portmapping).

J'ai décrit toutes les étapes en détail ici sur mon blog. http://techforpassion.blogspot.it/2013/12/Android-how-to-share-folder-over-wifi.html

J'ai essayé différents serveurs samba, et la seule application gratuite qui fonctionne dans cette configuration s'appelle Serveur Samba

3voto

artkoenig Points 131

J'ai actuellement terminé un application ( pour les appareils non enracinés ) pour partager des fichiers dans un réseau local. Les leçons que j'ai apprises :

  • Il est possible d'exécuter un serveur SMB sur Android sans accès Root (sur un port non privilégié). Mac OS X s'y connecte sans problème (si vous diffusez votre ip et votre port via Bonjour). Mais Windows ne le fait pas. Comme déjà dit par un autre utilisateur, Windows utilise des ports privilégiés "codés en dur" pour l'accès à SMB. Le seul moyen que j'ai trouvé pour se connecter avec Windows est de créer un adaptateur réseau loopback comme expliqué ci-dessous ici (pas le même objectif, mais l'idée). Enfin, je pense que le Le moyen le plus simple pour l'utilisateur est d'utiliser WebDAV sous Windows. . Même si le système Windows n'est pas convivial, car vous devez entrer votre adresse IP à la main et je n'ai pas trouvé de moyen de la découvrir (si vous en connaissez un, envoyez-moi un message).
  • Dans le monde Mac OS X, le protocole SMB est un vainqueur incontestable. . Votre partage sera auto-découvert par Bonjour et apparaîtra comme par magie dans le Finder. Il est étrange que les partages WebDAV et FTP soient ignorés (non montés automatiquement par le Finder), bien qu'ils sont supportés par Bonjour. Les clients tiers (par exemple Cyberduck) n'ont aucun problème avec la découverte automatique de ces partages.

2voto

Bryan Denny Points 21817

Vous pouvez également exécuter un serveur ftp sur votre téléphone pour accéder au contenu de votre carte SD. Consultez SwiFTP .

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X