我最近设置的 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:部分突破!问题出在注册表项 上,ProviderOrder
Windows 使用它来确定要使用哪个 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
我遇到了类似的问题,但尚未解决。