我曾让 Samba 在 Centos 8 服务器和 Windows 10 客户端上作为独立服务器运行。然后我升级到 Samba 4.11,一切都崩溃了。
这是 smb.conf 文件
[global]
path = /srv/smb
writeable = yes
security = user
netbios name = konishiki
wins support = yes
local master = yes
preferred master = yes
client min protocol = SMB2
client max protocol = SMB3
sync always = yes
socket options = TCP_NODELAY
passdb backend = tdbsam
workgroup = WORKGROUP
log level = 2
unix password sync = no
vfs objects = acl_xattr
map acl inherit = yes
wins support = yes
username map = /etc/samba/smbusers
admin users = hank, hankwin hcohe
[homes]
inherit acls = Yes
browseable = no
writable = yes
path = /home
comment = Home Directories
[hankwin]
path = /srv/smb/hankwin/
read only = no
[hank]
path = /srv/smb/hank
read only = no
create mask = 777
在服务器端,[小锦是历史上最伟大的相扑选手,所以我用他的名字命名我的大文件服务器] smbclient 给了我以下报告:
[root@konishiki samba]# smbclient -L localhost -U%
Sharename Type Comment
--------- ---- -------
hankwin Disk
hank Disk
IPC$ IPC IPC Service (Samba 4.11.2)
SMB1 disabled -- no workgroup available
我觉得我想要的是禁用 SMB1。这是 Samba 4.0 的一大改进,但为什么没有可用的工作组?
在客户端(akaoninoko 是我的客户端)net view 显示如下:
C:\Users\hcohe>net view
Server Name Remark
-------------------------------------------------------------------------------
\\AKAONINOKO
The command completed successfully.
显然,akaoninoko 看不到来自 konishiki 的共享。名称解析正在工作,我可以在所有主机之间 ping 通,没有任何问题。我在两个接口上运行了 netshark,并确认浏览消息正在传递,并且 konishiki 赢得了本地主机选举,但 Windows 10 客户端似乎没有收到该消息。(可根据要求提供 pcap)。
我尝试过的其他方法:我卸载了客户端上的 SMB1 支持,但这导致了更糟糕的情况,即 net view 命令生成了系统错误。[抱歉,我想显示错误消息,但我需要再次卸载 SMB1 支持并重新启动,这需要很长时间。]
任何建议将不胜感激。
汉克
答案1
我认为你想要的是两件相反的事情。
我觉得我想要的是禁用 SMB1。这是 Samba 4.0 的一大改进,但为什么没有可用的工作组?
由于您的 Samba 配置具有client min protocol = SMB2
,它还会阻止 smbclient 使用 SMBv1 来查询服务器的工作组名称——该操作没有 SMBv2/3 等效操作。
(client min protocol
不是关于連接客户——这是关于 Samba 的自己的[lib]smbclient。更改 Samba 服务器与其他客户端通信的协议的选项是server min protocol
。)
总体而言,工作组是一个仅与 NetBIOS 相关的概念,它与 SMBv1 混杂在一起,通常与其一起被禁用。工作组不直接与 SMB 文件共享交互 - 它们的存在是为了将计算机分组以供 NetBIOS “浏览”,主要是出于技术原因,以减少选定浏览器的负载。
我卸载了客户端上的 SMB1 支持,但这导致了更糟糕的情况,即 net view 命令生成了系统错误。
在 Windows 上卸载 SMBv1 也会卸载 NetBIOS 支持。请注意,与 Samba 配置不同(它只告诉“smbd”守护程序拒绝 SMBv1 协商,不会影响“nmbd”NetBIOS 守护程序),在 Windows 上删除 SMBv1实际上删除了实现该协议的内核驱动程序。
具体来说,浏览消息是通过 SMBv1“邮件槽”交换的 - 因此即使“nmbd”可能仍在 Samba 端运行,但 Windows 上不再需要关注它。
Windows 首选的替代“浏览”协议是 WS-Discovery,它由不同的系统服务(“功能发现”之类的东西)处理。Explorer 将自动使用这两种服务,并在“网络”选项卡中显示 NetBIOS 和 WSD 结果,但网络视图尚未更新以与新服务进行交谈。
WS-Discovery 不是 Samba 的一部分,但至少有两个 Linux 实现(韋斯代德和wsdd2)。WSD 仍然具有“工作组”参数,但不像 NetBIOS 那样使用它。
(Linux 和 macOS 可能更喜欢通过 mDNS 的 DNS-SD,但尽管 Windows 已经支持 mDNS 进行主机名解析和打印机发现,但它尚不支持 SMB 服务发现。)