我使用 SAMBA 访问网络共享已经有一段时间了。它在 19.xx 中运行良好,但我认为它在 20.04 和 20.10 中可能出现故障(我使用的是 20.10)。
我无法访问我自己本地计算机上的共享,尽管我似乎可以访问路由器上的共享。它弹出一个错误对话框,显示“无法从服务器检索共享列表”的消息?抱歉,我不记得确切的错误消息了。
我思考我知道问题可能出在哪里。看来 SMB1 可能出于安全原因被禁用,但 SMB2/3 可能仍然存在。我不知道如何找出这个问题。
testparm
通过了。findsmb
并且smbtree
没有起作用(但是在以下修补之后,它们现在可以起作用了)。
我编辑了 /etc/samba/smb.conf 并将以下内容添加到网络部分...
client min protocol = NT1
server min protocol = NT1
name resolve order = bcast host lmhosts wins
重新启动了 smbd 和 nmbd,似乎已经修复了问题。我思考这将重新启用 SMB1...但我不是 SAMBA 专家。
现在smbstatus
显示...
Samba version 4.12.5-Ubuntu
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
24943 nobody nogroup satellite-e55 (ipv6:fe80::c433:26d6:91d2:3475:59876) NT1 - -
19177 nobody nogroup satellite-e55 (ipv4:192.168.0.100:57868) NT1 - -
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
IPC$ 19177 satellite-e55 Sat Mar 20 07:17:40 PM 2021 PDT - -
IPC$ 24943 satellite-e55 Sun Mar 21 07:56:25 AM 2021 PDT - -
No locked files
这是发生了什么吗?我是否实施了正确/最佳修复?20.xx 中发生了什么可能导致此问题?
更新#1:
nmap --script smb-protocols IPofServer/32
我的路由器...
~$ nmap --script smb-protocols 192.168.0.1/32
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-22 07:01 PDT
Nmap scan report for caspurr.local (192.168.0.1)
Host is up (0.012s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
548/tcp open afp
631/tcp open ipp
5000/tcp open upnp
8200/tcp open trivnet1
9100/tcp open jetdirect
9101/tcp open jetdirect
9102/tcp open jetdirect
9103/tcp open jetdirect
20005/tcp open btx
49152/tcp open unknown
Host script results:
| smb-protocols:
| dialects:
| NT LM 0.12 (SMBv1) [dangerous, but default]
| 2.02
| 2.10
| 3.00
| 3.02
|_ 3.11
Nmap done: 1 IP address (1 host up) scanned in 4.21 seconds
我的电脑…
~$ nmap --script smb-protocols 192.168.0.100/32
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-22 07:03 PDT
Nmap scan report for ubuntu-eth0.local (192.168.0.100)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
Host script results:
| smb-protocols:
| dialects:
| NT LM 0.12 (SMBv1) [dangerous, but default]
| 2.02
| 2.10
| 3.00
| 3.02
|_ 3.11
答案1
这里有两个问题 - 实际上是三个 - 它们结合在一起导致了您所报告的问题。
一个是 gvfs( gvfsd-smb-browse )中的一个错误,当您在文件管理器中浏览服务器及其共享时,该错误硬连线为使用 SMB1( NT1 )来获取服务器及其共享的列表。
第二个是 Sambas 决定在客户端和服务器端禁用(但不删除)SMB1。
您的 samba 服务器可以在 SMB2.02 到 SMB3 之间运行。gvfs 中的错误导致 samba 客户端尝试使用服务器无法理解的 SMB1 访问该服务器,因此它会抛出错误:
无法从服务器检索共享列表:参数无效
有三种方法可以解决这个问题:
[1] 通过在“连接到服务器”中请求服务器及其共享来绕过 gvfsd-smb-browse:smb://server-host-name.local/share-name
Samba 客户端和服务器将使用 SMB3 连接。
[2] 或者按照你刚才的操作,将最小服务器和客户端设置为 SMB1 (NT1)。IT 也将使用 SMB3 进行连接,因为在初始 SMB1 连接后,服务器和客户端会相互协商以确定要使用的最佳方言。
[3] 或者使用 mount.cifs 挂载,该挂载也将使用 SMB3 进行连接。必须在 fstab 中设置才能自动执行。
如果这能让您感觉好一点,那么新安装的 Win10 计算机将无法“发现”您的 samba 服务器,因为它也禁用了 SMB1。那里的解决方案与您的 Linux 系统相同:使用连接\\server-host-name.local
或在 Win10 的客户端启用 SMB1,而微软真的不希望任何人这样做。
答案2
同样的问题。我的 Windows 机器可以很好地与本地 Samba 服务器配合使用,但我的 Ubuntu 20.04.4 机器却不能。通常,在我的 Ubuntu 文件浏览器中,我会使用以下命令访问服务器:
smb://server-host-name.local/share-name
但它不起作用。
对我而言有效的解决方案是用服务器的 IP 地址替换服务器名称。示例:
smb://14.15.16.17/share-name