如何检查 SMB 连接和 Linux 上使用的方言?

如何检查 SMB 连接和 Linux 上使用的方言?

我想检查 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  -            -

相关内容