我已经有一段时间没有使用 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
这里有两个问题 - 实际上是三个 - 共同导致了您报告的问题。
一个是 gvfs ( gvfsd-smb-browse ) 中的一个错误,当您在文件管理器中浏览它们时,它硬连线使用 SMB1 ( NT1 ) 来获取服务器及其共享的列表。
第二个是 Sambas 决定在客户端和服务器端禁用(但不删除)SMB1。
您的 samba 服务器可以在 SMB2.02 到 SMB3 之间运行。gvfs 中的错误导致 samba 客户端尝试使用服务器无法理解的 SMB1 访问该服务器,因此它会引发错误:
有三种方法可以解决这个问题:
[1] 通过在 Connect to Server 中询问服务器及其共享来绕过 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 的客户端连接 OR 启用 SMB1,Microsoft 真的不希望任何人这样做。这里同样的问题。我的 windows 机器在我的本地 Samba 服务器上运行良好,但我的 Ubuntu 20.04.4 机器不能。通常在我的 Ubuntu 文件浏览器中,我会使用以下命令访问服务器:
但它不起作用。
对我有用的解决方案是用服务器的 IP 地址替换服务器名称。例子: