终于知道为何安卓平台上几乎没有 SMB 服务器端的原因了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jasonyang9
V2EX    分享发现

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

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

    因为 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

    也真是醉了。。
    30 条回复    2025-02-02 08:44:05 +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
    nxforce
        14
    nxforce  
       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   2
    @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 请问楼主,教程能放出来学习下吗
    gggglws
        26
    gggglws  
       251 天前
    @Nitroethane 问题是 Android root 需要 解锁 bl 和有人提供 root ,解锁 bl 现在几乎没有无损了,就是有损解锁都少,者少里面有些品牌系列还不是每台机都能解锁,不能发售时就确定
    gggglws
        27
    gggglws  
       251 天前
    @wly19960911 30mb/s 是 Android app 支持的问题,不是 smb 的问题。
        28
    gggglws  
       251 天前
    @talentl 这个是 linux 组件,基于安全考虑,但是 Android 绝大多数没有 root 权限,能获取的也多多少少有些毛病。本质是 Android 手机要卖存储容量和高适配的网盘,还有各种原因,自然不会给 root 权限。
    gggglws
        29
    gggglws  
       251 天前
    @zpf124 问题来自于 Android 而不是 linux 。
    “而在安卓上,必须拥有 root 权限才可以开启(监听)小于 1024 的端口”表述不清楚,
    应该补充说明绝大多数 Android 手机不能获取 root 权限。
    gggglws
        30
    gggglws  
       251 天前
    这个 LAN drive 作为客户端便捷性还不如那些文件管理器 app……
    真正需要的是接入“存储访问框架 SAF”,这样支持 SAF 的 app 都能访问 smb 。
    目前只知道 CIFS Documents Provider 可以。但是这玩意大点的文件就断连接,别说视频,大点的照片都看不了;小照片多几张预览也出问题。
    Android 只能说就是一坨屎。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5224 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:21 PVG 17:21 LAX 02:21 JFK 05:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86