让 Nautilus 使用协议 2.0 挂载 SMB 共享

让 Nautilus 使用协议 2.0 挂载 SMB 共享

当我通过 Nautilus 安装 SMB 共享时,传输速度很慢。因此,我进行了一些研究,发现当我通过 CLI 安装共享并专门将协议版本设置为 2.0 时,速度会快得多。

这是我在 CLI 上使用的命令:

sudo mount -t cifs -o vers=2.0,username=Lukas,password=xxxx,uid=1000,gid=1000 //nas/video /media/lukas/nas

我怎样才能让 Nautilus 在挂载我的共享时使用 2.0 版本?

  • Nautilus 版本是“GNOME nautilus 3.26.3”
  • Gnome Shell 版本为“GNOME Shell 3.28.3”
  • Ubuntu 版本为“18.04.1 LTS”

答案1

如果您感兴趣的话,我有一个替代建议。与其费心研究 Samba 客户端如何访问 NAS(正如我所说,这应该是不必要的,因为如果需要,它会自行使用 SMB2/3),为什么不直接自动使用 CIFS 呢?

在 /etc/fstab 末尾添加以下行:

//nas/video /media/lukas/nas cifs vers=2.0,username=Lukas,password=xxxx,uid=1000,gid=1000,noauto,user 0 0

注意:如果服务器支持,也可以将其表示为 mDNS 合格主机名://nas.local/视频 或者 IP 地址://192.168.0.100/视频

如何运作:

禁止自动= 将使其不会在启动时挂载。我们将设置它以在您需要时按需使用 CIFS - 如果您有笔记本电脑,这将非常有用。

用户= 将使普通用户(非 sudo )可以挂载该共享。

挂载点= 由于它位于 /media 下,因此它将引发 udisks 响应:

(1)Nautilus 的侧面板上会出现一个图标。

(2)它将是“可操作的” - 单击它,系统将转到 fstab 以找出如何挂载它,然后挂载它 - 再次单击它即可卸载共享。

这种方法还有一个好处。它将添加到 Nautilus 的图标也将显示在大多数应用程序中 - 例如 gedit > Open。​​然后您可以直接从应用程序安装共享。

任何读到这篇文章的人请注意挂载点在这里很重要。要使 udisks magic 发挥作用,挂载点必须位于 /media 或您的主目录下。

答案2

简而言之,Nautilus 已经在这么做了。您可能遇到的是 CIFS(由 Linux 内核控制)与 gvfs/smbclient(Nautilus 使用)共享挂载之间的差异。CIFS 方法似乎更快,也许是因为 gvfs 的开销。

Nautilus 使用的 samba 客户端将与服务器协商,在早于 SMB1 的“最小值”一直到 SMB3_11 的“最大值”之间找到最佳的 SMB 方言。

从 4.13.5 开始的 Linux 内核也会在 SMB2.1 和 SMB3 之间使用 CIFS 与服务器进行协商。

我想你可以通过在 /etc/samba/smb.conf 中添加最小值来覆盖 samba 客户端在 Nautilus 中自然执行的操作,但这不应该有任何区别:将此行放在 [global] 部分中,就像工作组 = 工作组线:

client min protocol = SMB2

SMB2 有不同的变体:SMB2_02、SMB2_10、SMB2_22、SMB2_24。默认情况下,“SMB2”选择“SMB2_10”,只需确保不要为最大值添加任何内容即可。

编辑:似乎有人对“客户端最小协议”行的放置位置有些困惑 - 在服务器中还是在客户端中。有人建议将其放在服务器中。

如果我设置了一个 18.04 服务器并在服务器上指定“客户端最小协议 = SMB2”,然后使用 Ubuntu 16.04 客户端访问它,该客户端根据设计最多(无需修改)只能使用 SMB1(又名 NT1)访问服务器,以下是在服务器上访问的结果:

xxx@srvub1804:~$ sudo smbstatus

Samba version 4.7.6-Ubuntu
PID     Username     Group        Machine                                   **Protocol**               
-------------------------------------------------------------------------------------
4681    nobody       nogroup      vub1604 (ipv4:192.168.1.140:45648)        **NT1**

没有变化,因为客户端仍然使用 SMB1(NT1)访问服务器。

但是,如果我将客户端上的客户端最小/手动设置修改为“客户端最小协议 = SMB2”和“客户端最大协议 = SMB3”,并从服务器中删除“客户端最小协议”,我最终会得到预期的结果:

xxx@srvub1804:~$ sudo smbstatus


Samba version 4.7.6-Ubuntu
PID     Username     Group        Machine                                   **Protocol**             
-------------------------------------------------------------------------------------
4915    nobody       nogroup      vub1604 (ipv4:192.168.1.140:45664)        **SMB3_11**

我认为混淆源自另一个参数“最小协议”(又称“服务器最小协议”),该参数确实规定了允许访问的 smb 最小方言。该参数在服务器上完成。“客户端最小/最大协议”在客户端上完成。

如果客户端上有 smb.conf,那就太好了。如果没有,您可以按如下方式安装:

sudo apt install smbclient

相关内容