我全新安装了 Ubuntu 20.04,并启用了 Samba 共享。当尝试通过浏览文件管理器访问共享时,出现错误“无法从服务器检索共享列表:参数无效”。
这种情况发生在共享 samba 共享的 PC 上,也发生在另一个 Linux 机器上。从 Windows 10 电脑上浏览工作正常。
我看过很多发布的解决方案,但没有一个适合我:我知道我可以在 smb.conf 中启用 NT1 (SMB1) 协议,但我不想使用它,因为它不安全。我可以使用 IP 地址访问共享(这对我不起作用),或者可以使用 cifs 挂载共享。
但我希望能够通过在文件管理器中浏览来访问共享。如何配置 Ubuntu 20.04 机器才能访问 SMB2(或更高版本)共享?
简短回答:在解决此错误之前您不能:https://bugs.launchpad.net/gvfs/+bug/1828107
gvfs 后端进程 ( gvfsd-smb-browse ) 下降到 SMB1 ( NT1 ) 以获取 SMB 主机及其共享的列表,然后卡在那里。当它尝试访问像 Ubuntu 20 这样禁用了 SMB1 的 SMB 服务器时,它不能访问,因为没有 SMB1 - 这是“无效参数”。
您仍然可以访问主机及其共享,但无法浏览或发现它。您必须在“连接到服务器”中通过主机名和共享名显式访问它。
从 Windows 10 电脑上浏览工作正常。
Win10 客户端只有两种方法可以发现任何 Linux samba 服务器:
** 您在 Ubuntu 机器上启用了 WS-Discovery,您会记得这样做,因为它有点复杂。
** 或者您在 Win10 机器上启用了客户端 SMB1。您可以在 Win10 中通过以下方式验证:
在搜索中输入“ Windows 功能”,然后展开SMB 1.0/CIFS 文件共享支持
在这种情况下,Win10 将使用 SMB1 获取共享列表,然后使用 SMB2 / SMB3 进行实际连接。这是 Ubuntu 20 客户端无法做到的事情。
我有一台Win10机器,在客户端启用了SMB1。在资源管理器中,我可以看到使用 NetBIOS 的非 smb1 Ubuntu 服务器:

如果我连接到它的共享之一,我将使用 SMB3 连接:
$ sudo smbstatus -b
Samba版本4.11.6-Ubuntu PID用户名组机器协议版本加密签名
------------------------------------------------ -------------------------------------------------- -------------------------------------------------- - 1443无人无组
2605:a601:a1a4:d000:30e3:5dca:a90c:1fea(ipv6:2605:a601:a1a4:d000:30e3:5dca:a90c:1fea:49761)SMB3_11
- -
Run Code Online (Sandbox Code Playgroud)