使用没有root访问的SMB服务器 -- wi-fi 领域 和 root-access 领域 和 cifs 领域 android 相关 的问题

Using SMB server without root access


19
vote

问题

中文

我正在寻找我的HTC Hero(Android 2.1)的方式,所以我可以通过常规Windows文件共享在WiFi网络上分享我的SD卡和电话内存的内容。我想要一个不需要我root手机的人,我愿意为合适的应用支付,所以它不必是免费的。

我在想使用SMB服务器,到目前为止,我发现的只是:

  1. sambaandroid 这需要root访问。
  2. androidsmb 这是一个"smb / cifs网络文件和打印机共享的Java实现用于Android设备的服务器"托管在Google代码上没有文档并且没有发布任何文件。

甚至技术上可以在可以在没有root访问权限的情况下在Android上开发SMB服务器?

英文原文

I'm looking for a way for my HTC Hero (Android 2.1) so I can share the contents of my SD card and phone memory over the WiFi network like a regular Windows file share. I'd like one that does not require me to root my phone, and am willing to pay for the right app so it doesn't have to be free.

I'm thinking of using SMB server and all I've found so far are:

  1. SambaAndroid which requires root access.
  2. androidsmb which is a "Java implementation of the SMB/CIFS network file and printer share server for Android devices" hosted on Google Code that has no documentation and has not released any files.

Is it even technically possible to develop an SMB Server on Android that can be installed without root access?

        
 
 

回答列表

13
 
vote
vote
最佳答案
 

作为你的原始问题仍然没有回答,我想知道一样,这是答案。

简短答案:否,没有root,不可能使用默认端口运行SMB服务器,以便由Windows PCS找到它。

long答案:SMB在端口137-139(UDP和TCP)上使用NetBIOS或更新的系统(从Windows Vista)上直接在TCP端口445上运行,后者在后一种情况下由LLMNR解析(Link -local组播名称解析)在UDP端口5355上运行的协议。为什么这是重要的?未作为root运行的应用程序不能绑定到未经特权的端口(< 1024)。可以使用SMB的替代端口,但Windows是硬连线只能收听默认值。所以我想如果您使用Linux或单独的SMB客户端,允许使用自定义端口号的服务器连接到服务器。但这并不是一条直接的方式。

 

As your original question still isn't answered and I wondered the same, here's the answer.

Short answer: No, without root it's not possible to run an SMB server using the default ports so that it's found by Windows PCs.

Long answer: SMB either runs on ports 137-139 (UDP and TCP) using NetBIOS or on newer systems (from Windows Vista onwards) directly on TCP port 445 where in the latter case computer names are resolved by the LLMNR (Link-local Multicast Name Resolution) protocol which runs on UDP port 5355. Why is this important? Apps not running as root can't bind to unprivileged ports (<1024). It's possible to use alternative ports for SMB but Windows is hard-wired to just listen to the default ones. So I guess if you use Linux or a separate SMB client for Windows which allows to connect to a server with a custom port number it's probably possible. But it's not really a straight-forward way.

 
 
     
     
10
 
vote

虽然可能无法运行一个没有root 或,可以运行一个没有root的webdav服务器以获得类似的效果。

设置Android WebDAV服务器

在我的库存nexus 7上,我安装了 webdav server < / a>,打开它,单击开始按钮,并立即在应用程序显示的URL上查看我的Web浏览器中的 abcdefghijklmn/storage/sdcard 文件夹,即 http://192.168.x.y:8080 < / p>

请注意,使用WebDAV,您还可以选择选择 Root(/) DCIM 以及 SDCard 作为WebDAV < EM> Root 。

通过Windows资源管理器使用WebDAV服务器

然后我将 http://192.168.x.y:8080 映射为Windows资源管理器中的网络驱动器,可以访问我的存储驱动器的内容,就像我通过MTP连接,而是通过驱动器号。

可悲的是,这个解决方案非常慢。

每个目录更改需要6到20秒,就像访问大多数文件一样。虽然访问文件后,它以合理的速度传输(在Windows资源管理器中复制单个42MB文件大约60秒,所以700KB / s)。

因此,通过Windows资源管理器的WebDAV是可以下载一些您知道的位置的大型文件,而是这种方式浏览或同步整个设备并不快。我在大约6000个文件和400目录中同步了1.75GB的数据,并且需要10个小时,即平均每分钟约50kb / s或10个文件/目代。

通过windows命令行使用webdav服务器

甚至来自命令行,每个目录列表都需要5-6秒,以及任何文件访问。从命令行复制相同的42MB文件大约20秒,因此大约2.1MB / s。

通过web浏览器使用webdav服务器

WebDAV的最快选项是使用Web浏览器直接通过给定的URL。更改目录很少需要多秒钟并从Web浏览器下载相同的42MB文件,大约需要12秒,因此大约3.6Mb / s。

使用Web浏览器的缺点是它只显示日期(没有大小或类型),并且在文件和目录之间没有区别,因此如果文件没有扩展名(或目录),那么它可能如果单击链接将带您到另一个网页(对于目录)或开始下载(对于文件),则不是显而易见的。

capeats

  • 默认情况下,Windows将WebDAV下载的大小限制为50000000字节(47.6MB),虽然这可以是通过注册表hack 改变(<代码> FileSizeLimitInBytes 在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters 中)如果您知道您在做什么。

  • webdav访问不安全。即使在WebDAV共享上设置密码,连接仍然是 http not https ,所以它没有加密。 仅在安全的WiFi网络上使用webdav ,当您在互联网咖啡馆或其他不安全的WiFi时,肯定不会启用WebDAV服务器。

 

While it may not be possible to run an SMB server without root or using port forwarding, it is possible to run a WebDAV server without root for a similar effect.

Setting up an Android WebDAV server

On my stock Nexus 7, I installed WebDAV Server, opened it, clicked on the start button and was immediately able to see my /storage/sdcard folder in my web browser at the URL displayed by the application, i.e. http://192.168.x.y:8080

Note that with WebDAV, you also have the option of selecting Root (/) or DCIM as well as SdCard as the WebDAV root.

Using the WebDAV server through Windows Explorer

I then mapped http://192.168.x.y:8080 as a network drive in Windows Explorer and could the access the contents of my storage drive, just as if I was connected via MTP, but through a drive letter.

Sadly, this solution is incredibly slow.

Every directory change takes between 6 and 20 seconds, as does accessing most files. Once a file is accessed though, it transfers at a reasonable speed (copying a single 42MB file in Windows Explorer took around 60 seconds, so 700KB/s).

Thus WebDAV via Windows Explorer is Ok for downloading a few large files whose location you know, but browsing or syncing a whole device this way isn't quick. I synced 1.75GB of data in around 6000 files and 400 directories and it took 10 hours, i.e. around 50KB/s or 10 files/dirs per minute on average.

Using the WebDAV server through Windows command line

Even from the command line, each directory listing takes 5-6 seconds, as does any file access. Copying the same 42MB file from the command line took around 20 seconds, so around 2.1MB/s.

Using the WebDAV server through a web browser

The fastest option for WebDAV is to use your web browser though, directly through the URL given. Changing directory rarely takes more than a second and downloading the same 42MB file from the web browser took around 12 seconds, so around 3.6MB/s.

The downside of using the web browser is that it only shows the date (no size or type) and makes no distinction between files and directories so if a file doesn't have an extension (or a directory does) then it may not be obvious if clicking on a link will take you to another web page (for a directory) or start a download (for a file).

Caveats

  • By default, Windows limits the size of WebDAV downloads to 50000000 bytes (47.6MB), though this can be changed through a registry hack (FileSizeLimitInBytes in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) if you know what you are doing.

  • WebDAV access is not secure. Even if you set a password on the WebDAV share, the connection is still http not https, so it is not encrypted. Only use WebDAV on a secure wifi network and certainly don't enable the WebDAV server while you are in an internet cafe or other unsecured wifi.

 
 
   
   
5
 
vote

问题不是Samba服务器,而是Windows可以仅在端口445上访问Samba的事实,并且在非生根的Android上的普通应用程序无法侦听端口445。

但是您可以使用一些TCP端口映射来克服这一点:

  1. 安装一个 samba server 在您的Android上,并使它听取像7777
  2. 的端口
  3. 在某处安装一个TCP端口转发软件(我在VirtualPC上安装它)
  4. 设置portmapping软件以侦听端口445上的连接,并将连接到Android的连接到端口7777
  5. 现在您可以访问此VirtualPC上的共享文件夹,您将从Android(Trough PortMapping)上安装的Samba服务器中的数据获取数据

我在我的博客上详细描述了所有步骤 http://techforpordion.blogspot。 IT / 2013/12 / android-to-share-fold-wifi.html

我已经尝试了不同的samba服务器,也称在此配置中唯一的免费应用程序称为 samba server

 

The issue is not the samba server, but the fact that Windows can access a samba share only on port 445, and on a non-rooted android a normal App can't listen on port 445.

But you can overcome this with some TCP port-mapping:

  1. Install a samba server on your android, and make it listen on a port like 7777
  2. Install a TCP port-forwarding software somewhere (I installed it on a virtualPC)
  3. Setup the portmapping software to listen for connections on port 445, and forward the connections to your android on port 7777
  4. Now you can access the shared folder on this virtualPC, and you'll get the data from the samba server installed on android (trough the portmapping)

I've described all the steps in detail here on my blog http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

I've tried different samba server, and the only free app that works in this configuration is called Samba Server

 
 
   
   
2
 
vote

或者,您可以在手机上运行FTP服务器以访问您的SD卡的内容。签出 swiftp

 

Alternatively, you could run a ftp server on your phone to get access to your SD card's content. Check out SwiFTP.

 
 
 
 
2
 
vote

我目前完成了一个 app (<强>对于非生根设备),用于在本地网络中共享文件。我的经验教训:

  • 可以在android上运行smb server而没有root访问权限(在非特权端口上)。 Mac OS X连接到它没有任何问题(如果您通过Bonjour播放IP和端口)。但Windows没有。正如其他用户所说,Windows使用"硬编码" 的SMB访问权限的PRIFIDEGET端口。我找到与Windows连接的唯一方法正在创建一个Loopback网络适配器,如 (不是相同的目的,而是想法)。最后我想,用户最友好的方式是在Windows 上使用webdav。即使窗户不用户友好,因为你必须用手进入你的IP,我没有找到如何发现它,如果你知道一个,请把我丢掉一条线)。
  • 在Mac OS X World中,SMB协议是一个清晰的赢家。您的份额将由Bonjour自动发现,并且神奇地出现在Finder中。它是奇怪的,那个webdav和ftp股份被忽略(不是finder自动安装),尽管它们由Bonjour支持。第三方客户(例如Cyber​​duck)对这些股票的自动发现没有问题。
 

I currently finished an app (for non-rooted devices) for sharing files in local network. My lessons learned:

  • It is possible to run an SMB Server on Android without root access (on non-privileged port). Mac OS X connects to it without any problems (if you broadcast your ip and port via Bonjour). But Windows dont. As already said by another users, Windows uses "hardcoded" privileged ports for SMB access. The only way I found for connecting with Windows is creating an loopback network adapter as explained here (not the same purpose, but the idea). Finally I think, that the user-friendliest way is using WebDAV on Windows. Even if the Windows do it not user-friendly, because you have to enter your ip by hand and I did not find a way how it could be discovered (please drop me a line, if you know one).
  • In the Mac OS X world the SMB protocol is a clear winner. Your share will be auto-discovered by Bonjour and magically appears in Finder. It is weird, that WebDAV and FTP shares are ignored (not auto-mounted by Finder), though they are supported by Bonjour. Third-party clients (e.g. Cyberduck) have no problems with auto-discovery of these shares.
 
 
1
 
vote

我可能是误解,但听起来你需要一个smb客户端,而不是服务器。此外,您不需要root访问权限。要将SMB传输到计算机上的文件,您可以使用 Astro文件管理器使用 smb addon ,或者有文件专家它也是免费的。

你也可以使用 webdav 而不是smb与一个类似于 websharing 。

在过去,我使用了一个应用程序,我的电脑上的客户端软件允许我通过Web的任何地方通过文件资源管理器传输文件。这不是一个完整的VNC应用程序。我有一部新手机,现在为我的生活,我找不到这个应用程序。

 

I may be misunderstanding but it sounds like you need an SMB client, not a server. Also, you do not need root access. To use SMB to tranfer files to you computer you can use ASTRO File Manager with the SMB addon, or there's File Expert which is also free.

You could also use WebDAV instead of SMB with an app like WebSharing.

In the past I used an app that with client software on my computer allowed me to transfer files through the file explorer from anywhere through the web. It wasn't a full VNC app. I got a new phone and now for the life of me I can't find the app.

 
 
     
     

相关问题

4  一直留下Wi-Fi  ( Leaving wi fi on all the time ) 
它是否会影响待机时间,以便在手机上一直打开Wi-Fi? ...

7  我的wifi疑难解答 - 无法获得IP地址  ( Troubleshooting my wifi cant get an ip address ) 
我正在使用三星Galaxy Gio(Android 2.3)。我无法获得WiFi连接。我的兄弟有一些电话,可以得到一个连接。 当我启用WiFi时,它会尝试连接到路由器。然后说它试图获得IP地址。但不能这样做并关闭连接。 进入 *#*#4636#*#* 以及它告诉我以下内容: WiFi state: On Netw...

5  关闭Wi-Fi省电?  ( Turn off wi fi power saving ) 
是否有一种方法可以在Android上关闭Wi-Fi省电模式,即始终保持Wi-Fi广播?我宁愿拥有稳定,低延迟的Wi-Fi连接,比片状Wi-Fi连接略低于电池寿命和更长的电池寿命。换句话说,我想为我的Wi-Fi启用恒定的活动模式。 编辑:澄清,我谈论是Wi-Fi标准一部分的毫秒时间级省电模式。这是无线电在每个信标上唤醒...

0  无法通过某些WiFi网络连接到互联网  ( Cannot connect to internet via certain wifi networks ) 
我的lg g3最近开始采取行动,因为它将无法通过我的家庭wifi访问互联网。我可以在其他WiFi网络上连接到互联网,因此我认为这不一定是手机的问题。但是,我可以将其他设备连接到我的家中WiFi并访问互联网而没有任何问题,这意味着网络没有任何问题。我的手机连接到WiFi网络,它无法进入互联网。 lg g3 Andr...

2  Nexus S生根WiFi错误问题  ( Nexus s rooting wifi error problem ) 
所以,我已经解锁了我在Android 2.3.1上运行的三星Nexus,我扎根了它。现在的问题是我不能再打开WiFi了,只要我点击WiFi,它就会告诉我"错误" .. 为什么发生这种情况?如何解决它? ...

0  当附近WiFi热点时,手机停止使用3G  ( Phone stops using 3g when wifi hotspot nearby ) 
我对最新的合法固件有HTC愿望。我有wifi和3g,它通常很好;在家里它连接到我的(WPA2受保护的)路由器,当我走出时切换到3G。但有时,当我通过其他WiFi热点时,它会使用3G停止,所以我丢失了数据。我禁用了"告诉我开放WiFi" 选项。我不确定这些wifi热点是否是打开或加密的,但真的我只想使用我输入的WiFi...

0  通过WiFi播放来自另一个Android设备的视频  ( Play videos from another android device over wifi ) 
有没有办法通过WiFi连接(系束/直接)播放视频?我正在使用缺少SD卡插槽的Nexus 9。因此,我想从我的Android手机中播放有足够空间的视频。因为我需要它的假期,它应该是一个离线解决方案。我发现的解决方案仅提供将文件从一个设备复制到另一个设备(Airdroid,Xender,Wifi上的机器人)。是否有任何流...

13  强制棉花糖将无需互联网接入保留Wi-Fi  ( Force marshmallow to keep a wi fi without internet access ) 
我将运行的nexus 5x与运行MarshmoLalt 6.0的Nexus 5x相关联到没有互联网访问的Wi-Fi热点。 Android每秒丢弃连接,然后甚至不会尝试重新连接说明没有互联网。 如何强迫Android即使在没有互联网访问的情况下保持此Wi-Fi连接? ...

3  Wi-Fi不会留下来  ( Wi fi wont stay off ) 
我有一个摩托罗拉机器人,刚安装了最新的更新。 我的工作场所的Wi-Fi网络是气质,所以我更喜欢简单地关闭Wi-Fi并使用4G。 问题是,当我关闭时(在设置〜&gt; wi-fi〜&gt;将幻灯片移动到"关闭" )它显示为关闭,但下次我打开屏幕,Wi -fi重新打开了。 如何停止这个? ...

0  Wi-Fi网络无法扫描  ( Wi fi network can not scanned ) 
我最近买过索尼xperia sl有问题。我有Cisco WAP4410N路由器,不能在手机上扫描或连接其SSID,同时在自动通道选择模式下。我正在使用之前使用同一网络的iPhone,甚至是不同的笔记本电脑。 当我手动将通道更改为10时,我能够访问网络。 任何人都可以为我解决这个问题? ...

8  WiFi错误:“无法连接到网络”  ( Wifi error failed to connect to network ) 
间歇性地,当我尝试连接到WiFi网络时,我将以下错误消息作为Toa​​st消息: 无法连接到网络 在尝试连接时立即弹出消息,因此显然它没有尝试和失败。我没有找到日志中的任何错误。受影响的网络是我以前连接的那些没有变化的设置。 如何弄清楚问题是什么? 我有一个rooted galaxy nexus运行Andro...

0  Android Nougat 7.0 WiFi互联网之后〜10MB后  ( Android nougat 7 0 wifi internet drops after 10mb ) 
首先有一点背景 如下所示,与我裸露,应该是相关的。 我目前有一个htc 10,我的父亲也是如此。我的手机我从eBay购买,它带来了Nougat(7.0)更新已安装(让我们拨打电话1)。我的爸爸手机直接来自HTC,安装了棉花糖(电话2)。两种设备都是相同的工厂解锁emea版本的手机。 在"电话1" 上我没有Wi-Fi问...

0  使用WiFi加密狗监控网络  ( Using a wifi dongle to monitor network ) 
我有一个带内置WiFi的Android智能盒,我想向盒子添加一个加密狗,以便我可以监控网络。我找到了类似的问题,有点模糊答案(至少对我); Android作为WiFi桥与AP 我此刻我有3个wifi congles。设备可以检测其中2(使用DMESG从shell运行,也是获取连接的USB设备的VendorID和...

0  连接到WiFi时使用蜂窝  ( Use cellular when connected to wifi ) 
是否有可能强制连接到WiFi时使用蜂窝数据使用蜂窝数据。对于ios我发现了这个 https://苹果.stackexchange.com /问题/ 173894 / can-i-connect-to-wifi-hand-start-meast-cellular 问候, nils ...

12  WiFi在睡眠期间断开连接  ( Wifi disconnects during sleep ) 
我最近注意到,当我睡觉后我会使用手机时,WiFi不会连接,它必须连接。我进入了高级WiFi设置,确保"睡眠期间保持Wi-Fi" 被设置为"始终" ,但问题仍然存在。任何想法? 我有一个htc一个和&amp; t。 更新#1:通过三种不同的HTC Techs进行故障排除。最后一次努力是清除引导分区缓存和出厂重置手机。然...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.