我家里有一个小网络,并且在 Windows 上共享了一个文件夹。在其他 Windows 计算机上,我可以看到 Windows 共享列表的列表,但没有任何 Linux 设备可以这样做。
当我点击“Windows 共享”时鹦鹉螺表明:
Failed to retrieve share list from server: No such file or directory
但令人惊讶的是我可以访问smb://192.168.1.2/SharedFolder
我已经测试过了Fedora 23 直播,德班8和Debian 测试一切都一样。
我什至检查了我是否开放了 136、137、138 和 445 端口。
答案1
自最初的 WannaCry 恶意软件感染以来,Microsoft 已开始弃用旧版本的 Windows 磁盘和打印机共享协议 SMB 1.0,速度比原计划更快。
不幸的是,Windows 系统在非 Active Directory 域中发现和浏览网络共享的经典方法仍然使用旧协议的某些部分。
适用于非 AD 网络的新 Windows 共享发现协议 WS-Discovery,与 SMB 协议完全分离,Samba 尚未集成对其的支持。
如果您的 Windows 系统禁用了 SMB 1.0(强烈建议出于安全考虑),并且您没有使用 Active Directory,并且您的 Linux 系统没有可以使用新协议宣布其可用共享的软件,那么 Windows 系统将无法使用 SMB 1.0。能够自动找到 Linux 共享,但如果用户知道共享主机的名称/IP 和共享名称,仍然可以连接到它们。
在 Samba 成功集成新协议之前,有一些项目旨在缓解此问题:
https://github.com/christgau/wsdd- WS-Discovery 响应程序的 Python 3 脚本实现。
https://github.com/Andy2244/wsdd2和https://github.com/kochinc/wsdd2- C 实现的各种版本,基于 Netgear ReadyNAS OS 6 中的开源代码。
它们将读取 Samba 的配置并响应本地网络上的 WS-Discovery 查询。要使用这些,您必须允许端口 5357 上的传入 TCP 连接和端口 3702 上的多播 (UDP) 流量。协议的多播部分使用 IPv4 多播地址 239.255.255.250 和 IPv6 多播地址 fe02::c。
在客户端,Debian 8 可能太旧,无法在客户端工具中包含新的浏览协议。
答案2
确保您的 [ipcs] 隐式共享权限允许访客。
编辑:看到你的“服务器”系统是一个Windows系统,我想指出Windows客户端的默认行为是尝试使用当前凭据登录服务器 - 如果这不起作用,它会提示用户提供替代方案。 Windows 系统上的 IPC$ 共享需要允许来宾(即匿名)访问,因为它是用于获取其他共享对象列表的共享。所以首先要确保windows机器上的IPC$确实可以匿名访问。如果没有其他方法,请在 Linux 计算机的终端中尝试“smbclient -L 192.168.1.2”,并在出现任何提示时按住 Enter 键。这应该如果一切配置正确,则可以工作,否则您只是运气不好,Windows 客户端上的用户帐户配置与“服务器”上的(某些)帐户相同。
答案3
我遇到了这个问题并通过安装包解决了它gvfs-bin
。除了 之外gvfs-bin
,大多数gvfs
软件包都已安装:gvfs
、-common
、-libs
、-daemons
和-backends
。