无法在 Windows 上访问 SMB 共享,但可以在 Linux 上访问

无法在 Windows 上访问 SMB 共享,但可以在 Linux 上访问

我最近设置的 Samba 共享出现了一些问题。

共享的配置如下:

[data]
path = /media/data
available = yes
valid users = admin
read only = no
browseable = yes
public = yes
writable = yes

我能够通过 访问 Linux 和 OS X 上的共享smbclient,但在 Windows 上我收到“无法访问”错误(0x80070002,系统找不到指定的文件)。我在 Windows 上使用的语法是\\<server-ip>\data,但\\<server-ip>\media\data也不起作用。

更新:我设法通过 Cygwin 在 Windows 上编译 Samba 并smbclient在其下运行,但我仍然无法通过 Windows 上的本机客户端连接到共享。

更新 2:部分突破!问题出在注册表项 上,ProviderOrderWindows 使用它来确定要使用哪个 SMB 客户端。我的注册表项在之前使用 NFS 的实验中略有更改。为了修复它,我将其设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder为以下内容:vmhgfs,hgfs,LanmanWorkstation,RDPNP。这让我一直到登录提示,之后我又收到另一个错误 0x800704cf。

更新 3:成功了!这里出错的组件是我的适配器的“Microsoft 网络客户端”包。安装后,我所要做的就是重置适配器,然后我的共享就可以无缝连接了。

答案1

我设法解决了我的问题。

有两个组件存在故障:ProviderOrder注册表项和丢失的适配器包。

故障一:

Windows 上的 SMB 会查看ProviderOrder下的注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\来确定要使用哪种 SMB/CIFS 实现。如果没有列出实现或列出的实现不正确,Windows 将放弃。要修复此问题,只需将此字符串附加到ProviderOrder:中已有的字符串mhgfs,hgfs,LanmanWorkstation,RDPNP

故障二:

就我的情况而言,似乎我的适配器只是出于某种原因禁用了“Microsoft 网络客户端”。要在任何适配器上启用它,请转到网络和共享中心,单击“更改适配器设置”,然后在活动适配器上右键单击“属性”。从那里,选择“安装...”,然后在“客户端”上选择“添加...”。只需从出现的窗口中选择“Microsoft 网络客户端”,然后单击“确定”。然后,重置适配器或重新启动。

答案2

正确的路径是 \\data。Linux 和 Samba 中如何添加 admin 用户?在 Samba 中,使用二进制 smbpasswd 添加用户。

答案3

我已读到您需要将这些指令包含到您的conf中以使Windows正常工作。

hosts allow = 127.0. x.x.x.x etc
hosts deny = 0.0.0.0/0

我遇到了类似的问题,但尚未解决。

相关内容