终于知道为何安卓平台上几乎没有 SMB 服务器端的原因了

2019-07-05 09:16:17 +08:00
 jasonyang9

因为 Windows 平台上的 SMB 实现(服务端和客户端)硬编码了它的端口号 137-139 (基于 NetBIOS )或 445,你用非标准的端口提供 SMB 共享是无法被 Windows 找到的,所以为了适配 Windows 以及一众其他 SMB 客户端,必须使用这些“标准”端口号。

而在安卓上,必须拥有 root 权限才可以开启(监听)小于 1024 的端口。。。

27383 次点击
所在节点    分享发现
25 条回复
huaxianyan
2019-07-05 09:22:44 +08:00
好像是 SELinux 干的
Nitroethane
2019-07-05 09:26:29 +08:00
@huaxianyan 监听小于 1024 端口需要 root 权限是 Linux 本来就有的,不是因为 SELinux
wly19960911
2019-07-05 09:30:38 +08:00
SMB 对 CPU 负担大速度太慢了…就算可以我也不用。

SMB 看视频只有 30mb/s 不到的速度,DLNA 不说了。845 的 CPU 总不能说我性能不够主流吧…
internelp
2019-07-05 09:34:33 +08:00
有客户端就不错了,好多还没有呢。
leavic
2019-07-05 09:38:23 +08:00
同样的问题,适用于为什么安卓没有 smtp 服务器,Pop 服务器,ftp 服务器。。。。。
talentl
2019-07-05 09:41:33 +08:00
这个设置是出于什么考虑呢?
‘而在安卓上,必须拥有 root 权限才可以开启(监听)小于 1024 的端口’
7654
2019-07-05 09:48:59 +08:00
搭车求安卓 SMBv3 客户端
jasonyang9
2019-07-05 09:49:13 +08:00
@leavic #5

FTP 服务器有的啊,SwiFTP,开源的( PS. 被小米集成到它的文件管理器中去了,你开启远程文件管理然后用 FTP 客户端去连接,可以看到欢迎信息就是 SwiFTP )。因为 FTP 服务器和客户端都可以方便的设定端口。我经常手机上开 FTP 然后用 Filezilla 去访问。

其他服务器的也适用上面的,但没研究过。

大佬们有替代方案么,主要是跨平台共享文件。我看了 WebDAV,它默认 8080 口?
est
2019-07-05 09:49:33 +08:00
setcap 'cap_net_bind_service=+ep' /path/to/program

这样就不需要 root 了。
mgrddsj
2019-07-05 09:53:32 +08:00
有一个软件叫 Servers Ultimate,里面有几乎所有类型的服务器。当然,有些服务器(比如 SMB )是要 root 才可以用
jy02201949
2019-07-05 10:27:31 +08:00
即使连上了,但 SMB 在安卓上真心不好用
zpf124
2019-07-05 10:35:07 +08:00
@talentl
这个问题来自于 linux 而不是 安卓.

1024 以内的端口 一般都是某个重要服务使用的协议所使用了. 例如 ssh 默认 22 http 默认 80.

linux 更多时候是用于当服务器,并且还是多人多账户同时使用的. 为了避免某个低级别的用户自己瞎乱监听端口而导致某些基础功能服务不能使用, linux 要求你必须是管理员才能监听 1024 以内的端口.

而安卓的使用者只有一个普通用户, 管理员用户 和 root 用户都是默认关闭,不允许使用者接触的.
deorth
2019-07-05 10:51:20 +08:00
root 了,常年在 chroot 里跑一堆服务
joyhub2140
2019-07-05 10:56:17 +08:00
别说 smb 服务器了,android 上面一个好用的 smb 客户端也不错,特别是专心做 smb 的纯净软件,几乎找不到,最后只能将就用老版本的 ES 文件浏览器,不过随着系统版本的更新,这招也不太管用了。
shily
2019-07-05 11:03:11 +08:00
@7654 根本没有 SMBv3,你当然找不到了。v3 是扩充了 v2 的协议,提供了一些附加的功能,普通人根本用不上。目前主流的开源实现都已经支持了 v3,虽说客户端其实是支持的,但这些功能太小众,没有在界面上提供相应的功能而已。刻意的最求大版本号无意义。

你有啥需要是 v2 没有提供的吗?

楼主这是强行解释,非标端口又不是不能用。使用 NsdManager 广播一下协议和端口,一样可以在 Windows 上链接。
AllenW
2019-07-05 11:20:06 +08:00
我就想知道 smb 好用的客户端 除了 es 还有啥
BinRelay
2019-07-05 11:22:39 +08:00
我一直没理解为什么 smb 不能修改端口。而且 tm 漏洞还巨多。
jasonyang9
2019-07-05 11:25:06 +08:00
@joyhub2140 #14
@AllenW #16

X-plorer 不错的,作为 SMB 客户端,SMB v1/v2 都支持。它的 LAN 就是指 SMB。
mxalbert1996
2019-07-05 11:55:30 +08:00
@AllenW 免费的小米文件管理器,收费的 Solid Explorer,都在 Play 商店里有
Maskeney
2019-07-06 03:00:23 +08:00
@joyhub2140 solid explorer 了解一下?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX