V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jasonyang9
V2EX  ›  分享发现

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

  •  2
     
  •   jasonyang9 · 2019-07-05 09:16:17 +08:00 · 27161 次点击
    这是一个创建于 1728 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  2019-07-17 12:04:03 +08:00
    今天找到一个功能比较完善的 SMB 服务器和客户端(安卓),叫 LAN drive。

    当然,同样的,它在未 root 的机子上只能使用 1024 及以上端口。所以对于 Windows 来说,要充当一个客户端去连接它,必须进行端口转换。为此这软件还专门写了一篇教程,洋洋洒洒一大段都是为 Windows 能连上它( PS. MAC 和 Linux 没有任何问题,因为可自定义端口)。

    https://tubecast.webrox.fr/landrive/portmapping.html

    也真是醉了。。
    25 条回复    2021-02-15 14:36:28 +08:00
    huaxianyan
        1
    huaxianyan  
       2019-07-05 09:22:44 +08:00
    好像是 SELinux 干的
    Nitroethane
        2
    Nitroethane  
       2019-07-05 09:26:29 +08:00 via Android
    @huaxianyan 监听小于 1024 端口需要 root 权限是 Linux 本来就有的,不是因为 SELinux
    wly19960911
        3
    wly19960911  
       2019-07-05 09:30:38 +08:00 via Android
    SMB 对 CPU 负担大速度太慢了…就算可以我也不用。

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

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

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

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

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

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

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

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

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

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

    X-plorer 不错的,作为 SMB 客户端,SMB v1/v2 都支持。它的 LAN 就是指 SMB。
    mxalbert1996
        19
    mxalbert1996  
       2019-07-05 11:55:30 +08:00 via Android
    @AllenW 免费的小米文件管理器,收费的 Solid Explorer,都在 Play 商店里有
    Maskeney
        20
    Maskeney  
       2019-07-06 03:00:23 +08:00 via Android
    @joyhub2140 solid explorer 了解一下?
    slanternsw
        21
    slanternsw  
       2019-07-06 20:11:52 +08:00 via Android
    @AllenW MiXplorer + 插件
    jasonyang9
        22
    jasonyang9  
    OP
       2019-07-17 12:03:38 +08:00
    今天找到一个功能比较完善的 SMB 服务器和客户端(安卓),叫 LAN drive。

    当然,同样的,它在未 root 的机子上只能使用 1024 及以上端口。所以对于 Windows 来说,要充当一个客户端去连接它,必须进行端口转换。为此这软件还专门写了一篇教程,洋洋洒洒一大段都是为 Windows 能连上它( PS. MAC 和 Linux 没有任何问题,因为可自定义端口)。

    https://tubecast.webrox.fr/landrive/portmapping.html

    也真是醉了。。
    StellaM
        23
    StellaM  
       2020-08-17 09:37:31 +08:00 via iPad
    请问楼主还有发现别的好用的 SMB 服务器软件么?
    wanj8
        24
    wanj8  
       2020-09-18 11:35:42 +08:00   ❤️ 1
    @slanternsw Mixplore 的 smb 就是个残废,同样 smbv2 无线传输只能跑到 20MB/s+,x-plore 40MB/s+
    ashuai
        25
    ashuai  
       2021-02-15 14:36:28 +08:00
    @jasonyang9 请问楼主,教程能放出来学习下吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   991 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:13 · PVG 06:13 · LAX 15:13 · JFK 18:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.