我想检查 SMB 连接中的方言版本。
在 Windows 上,Get-SmbConnection
将会得到它。
PS C:\Windows\system32> Get-SmbConnection
ServerName ShareName UserName Credential Dialect NumOpens
---------- --------- -------- ---------- ------- -------
savdal08r2 c$ SAVILLTEC... SAVILLTEC... 2.10 1
savdalfs01 c$ SAVILLTEC... SAVILLTEC... 3.00 1
在 macOS 上 smbutil statshares -a
运行良好。
我应该在Linux上做什么?
答案1
如果您在 Linux 上运行 Samba 服务器,smbstatus
应显示每个客户端使用的协议版本。
如果 Linux 是客户端,则取决于您使用的客户端:如果您使用内核级cifs
文件系统支持,那么在除相当新的内核之外的所有内核中,答案是您查看/proc/mounts
该选项的挂载选项是否文件系统包括一个vers=
选项;如果不是,则假设它使用 SMB 1。
内核级 CIFS/SMB 支持中的 SMB 协议自动协商是最近开发的,据我所知,如果您没有指定所需的协议版本,则自动协商只会在启用 CIFS 调试消息时指示结果。但幸运的是,开发商做到了,因此谈判结果将始终显示在 中/proc/mounts
。
如果您使用smbclient
其他用户空间 SMB/CIFS 客户端(例如集成到桌面环境的客户端),那么它可能有自己的工具和诊断程序。
答案2
您可以使用 nmap 附带的脚本。 nmap/Zenmap(GUI) 将允许您扫描单个设备或子网范围(您的家庭或办公室网络),并尝试向您显示正在使用的 SMB 协议。
nmap --script smb-protocols 192.168.1.0/24
这里最重要的一点是停止使用 SMBv1出于安全考虑。它也被称为“新台币 LM 0.12' Zenmap 适用于大多数主要平台。
答案3
使用smbstatus
>>
https://www.samba.org/samba/docs/current/man-html/smbstatus.1.html
示例输出:
[root@server~]# smbstatus --shares
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
PubRO 26900 192.168.1.255 Thu Oct 25 12:43:51 AM 2018 PDT - -