maP*_*luE 7 linux command-line ubuntu arch-linux samba
我想检查 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
Run Code Online (Sandbox Code Playgroud)
在 macOS 上, smbutil statshares -a运行良好。
我应该在 linux 上做什么?
如果您在 Linux 上运行 Samba 服务器,smbstatus则应显示每个客户端使用的协议版本。
如果 Linux 是客户端,则取决于您使用的是哪个客户端:如果您使用内核级cifs文件系统支持,除了非常新的内核之外的所有内核,答案是您/proc/mounts查看是否有安装选项文件系统包括一个vers=选项;如果没有,假设它使用 SMB 1。
内核级 CIFS/SMB 支持中的 SMB 协议自动协商是最近的发展,据我所知,如果您不指定所需的协议版本,则自动协商只会在您启用 CIFS 调试消息时指示结果。但幸运的是,开发人员做到了,所以谈判结果将始终显示在/proc/mounts.
如果您使用smbclient或其他用户空间 SMB/CIFS 客户端(例如,一个集成到您的桌面环境的客户端),那么它可能有自己的工具和诊断程序。
小智 5
您可以使用 nmap 附带的脚本。nmap/Zenmap(GUI) 将允许您扫描单个设备或子网范围(您的家庭或办公室网络)并尝试向您展示正在使用的 SMB 协议。
nmap --script smb-protocols 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
这里的重点是出于安全考虑停止使用 SMBv1。它也被称为' NT LM 0.12 ' Zenmap 适用于大多数主要平台。