首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
探索世界的好奇心万岁
Udacity
网易公开课
Godel, Escher, Bach: An Eternal Golden Braid
宝塔
V2EX  ›  分享发现

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

  •  
  •   jasonyang9 · 134 天前 · 4699 次点击
    这是一个创建于 134 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  122 天前
    今天找到一个功能比较完善的 SMB 服务器和客户端(安卓),叫 LAN drive。

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

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

    也真是醉了。。
    22 回复  |  直到 2019-07-17 12:03:38 +08:00
        1
    huaxianyan   134 天前
    好像是 SELinux 干的
        2
    Nitroethane   134 天前 via Android
    @huaxianyan 监听小于 1024 端口需要 root 权限是 Linux 本来就有的,不是因为 SELinux
        3
    wly19960911   134 天前 via Android
    SMB 对 CPU 负担大速度太慢了…就算可以我也不用。

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

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

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

    大佬们有替代方案么,主要是跨平台共享文件。我看了 WebDAV,它默认 8080 口?
        9
    est   134 天前   ♥ 1
    setcap 'cap_net_bind_service=+ep' /path/to/program

    这样就不需要 root 了。
        10
    mgrddsj   134 天前 via Android   ♥ 1
    有一个软件叫 Servers Ultimate,里面有几乎所有类型的服务器。当然,有些服务器(比如 SMB )是要 root 才可以用
        11
    jy02201949   134 天前
    即使连上了,但 SMB 在安卓上真心不好用
        12
    zpf124   134 天前   ♥ 1
    @talentl
    这个问题来自于 linux 而不是 安卓.

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

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

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

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

    楼主这是强行解释,非标端口又不是不能用。使用 NsdManager 广播一下协议和端口,一样可以在 Windows 上链接。
        16
    AllenW   134 天前
    我就想知道 smb 好用的客户端 除了 es 还有啥
        17
    BinRelay   134 天前
    我一直没理解为什么 smb 不能修改端口。而且 tm 漏洞还巨多。
        18
    jasonyang9   134 天前
    @joyhub2140 #14
    @AllenW #16

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

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

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

    也真是醉了。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   838 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 21:32 · PVG 05:32 · LAX 13:32 · JFK 16:32
    ♥ Do have faith in what you're doing.