如何打开网络发现并使用Samba在计算机之间共享。

我有一台Ubuntu服务器。 从Windows客户端访问服务器工作正常。
但是服务器在Windows客户端的网络概览中没有列出。 对于Windows机器来说,这将是“网络发现”功能。
我如何使我的Samba服务器在网络上可见?
Windows版本是Windows 7。 在smb.conf中的工作组与Windows中相同。

我添加了编辑,谢谢你的回答! - Skip
1啊,在smb.conf中明确将工作组添加到我的共享条目后,它可以正常工作了,谢谢!之前我只在全局设置中有工作组! - Skip
6个回答

要在同一局域网上的2台或多台计算机之间共享资源(文件共享),您需要Samba,它默认情况下带有网络发现功能(在安装Samba后激活)。它可以用于您的本地网络,但您需要记住将工作组设置为网络正在使用的工作组。

要安装Samba,首先您必须"共享一个文件夹",我建议共享您家目录中的任何内容,这样由于权限问题就不会有太多麻烦,例如,可以是桌面上的一个文件夹。您可以通过右键单击文件夹并选择"共享"来进行共享,Ubuntu将指导您完成安装Samba和设置正确权限的一系列共享问题。

安装Samba的另一种方法是直接安装Samba ;),可以使用软件中心或在终端中输入以下命令:sudo apt-get install samba <-- 没想到吧!

现在编辑Samba配置以确保您位于相同的网络工作组中。所有计算机在局域网中的工作组应该是相同的。这样,它们就可以真正利用Windows与Ubuntu或Ubuntu之间的网络发现功能。

  1. 编辑你的 smb.conf 文件: sudo nano /etc/samba/smb.conf

  2. [Global] 部分找到一行写着 workgroup 的内容

    [global]
    
    ## 浏览/识别 ###
    
    # 将此处改为你的 Samba 服务器所属的工作组/NT 域名
     workgroup = WORKGROUP
    
  3. 将 workgroup 的值更改为你的网络工作组正在使用的值,或者设置一个你想要使用的新工作组名称,例如:

    workgroup = myhomenet
    
  4. 保存文件并重新启动 Samba 服务: sudo service smbd restart

享受奇怪网络发现的力量 ^^
这应该足够让Ubuntu到Ubuntu的局域网工作,但在涉及Windows的情况下,以防Windows无法看到您的Ubuntu电脑,在您的smb.conf文件的[Global]部分添加以下内容:
local master = yes
preferred master = yes

当然,记得重新启动你的Samba服务。

如果还是无法看到它,在Windows中找到高级共享设置,它位于网络和共享中心的左侧面板。在那里选择为使用40或56位加密的设备启用文件共享选项。这只是在Windows Vista及以上版本中存在的问题,如果你使用的是Windows XP,应该可以正常工作。

完成上述步骤后,要访问网络上的其他计算机,你可以打开文件浏览器并选择浏览网络

enter image description here


我的两台Ubuntu笔记本在“享受奇妙网络发现的力量^^”这一点上互相无法识别 :-( - user72056
1@Antinous等一下,但如果两者都是Ubuntu,为什么你需要对Samba进行高级配置呢?我的意思是,我理解易用性,但它应该像右键单击文件夹然后点击共享那样简单。这将安装Samba的基本功能。我可以问一下你使用的Ubuntu版本吗?为了给你一个概念,我现在有3台电脑使用的是Ubuntu 17.04。路由器启用了UPnP,它们可以轻松地相互发现。基本上,共享资源会自动显示在其他设备上。 - Luis Alvarado
我正在运行16.04和16.10。我的路由器也启用了UPnP... - user72056
1如果可能的话,您能升级到17.04版本或者安装16.04版本吗?也许不是针对你而言,但在我的情况下,16.10版本给我带来了太多的困扰。当我从16.04升级到17.04时,我实际上是直接跳过了16.10版本。 - Luis Alvarado
好的,我将我的16.10笔记本升级到了17.04。现在当我点击“Windows网络”时,出现了错误:“无法访问位置\n从服务器检索共享列表失败:没有这样的文件或目录”。然而,如果我输入“smb://MY.IP.ADD.RESS”,它确实可以工作! - user72056
但是现在我遇到了更多的错误:“后端不支持的操作”,当我尝试复制文件时 :-(。我确保清除了旧的Samba安装并重新安装... - user72056
1这个问题现在已经解决了。我之前把我的“Documents”文件夹分享到了“Home”,但是没有起作用。所以我改为分享了整个“Home”文件夹,这次成功了!:-D - user72056
1@Antinous 你真是个牛人! - Luis Alvarado
我做了几件事情。首先,我改变了我的“主机名”,显然我的两台笔记本电脑都在使用相似的主机名。然后,我进入了“/etc/samba/smb.conf”文件,并更改了我从机器正在使用的接口。“interfaces = 10.0.0.0/8 wlx1459c03f3385”,其中第一部分是我的家庭IP地址,第二部分是我的无线网卡的名称。完成这些操作后,我能够上传和下载文件到我的从设备。提及这一点可能对某些人有帮助。 - tisaconundrum
对我没用。但是@Marko的解决方案有效。 - J D

我决定解决这个讨厌的问题。它困扰我很久了,但是现在当我设置一个新的电脑时,是时候让它工作了。

我将我的Ubuntu盒子设置为WINS服务器,并在我的smb.conf文件中添加了上面帖子中的几行代码:
wins support = yes local master = yes preferred master = yes
由于这并没有起作用,我强制我的Win7盒子使用Ubuntu盒子作为WINS服务器,通过修改网络适配器IPv4首选项中的高级WINS设置。
这也没有起作用,所以我启动了Wireshark来查看发生了什么。我看到Win7盒子查询了WINS服务器,并且看到响应中包含了所有共享计算机。那么,为什么它们在Windows中没有显示出来呢?我想是防火墙的问题。我使用的是Windows防火墙,在其中的高级设置中,我注意到以下规则已启用:
File and Printer Sharing (LLMNR-UDP-In)
该规则对私有网络启用,但对域或公共网络未启用。我只需将该规则也启用于域和公共网络。
哎呀,我的计算机现在在Windows中显示出来了。我想可能有办法让Win7将Ubuntu盒子和其他Linux机器包括在其定义的“私有网络”中,但我会把这个冒险留到以后再解决。
我希望这能对某人有所帮助。
编辑:在启用防火墙规则后,我移除了网络适配器中硬编码的WINS服务器设置,现在当流量被允许时,我认为标准的协商过程可能会按照我的意愿工作。

虽然这是一个老问题,但Samba仍然存在一些问题。我正在搭建Samba服务器,它正常工作,除了我的Windows 10无法在网络位置中看到我的Samba服务器(但我可以通过IP地址直接访问它)。问题出在Windows服务发现上,这在Samba中尚未实现。
不过,有一个名为WSDD github repository的项目,它可以将这个功能添加到你的Samba服务器中。它使用Python编写,并且有很好的文档,还提供了其他相关项目的链接,讨论为什么Samba不起作用,并警告不要使用SMB1协议(因为在互联网上的一些指南中,SMB1被视为解决此问题的“修复”方法,因为它使用了在Samba中已经实现的NetBIOS)。

我通过打开添加或删除Windows组件并勾选SMB1 / CIFS客户端和服务器来解决了这个问题,效果非常好。

希望能帮到你。

祝好

马尔科


如果你想要一个用户友好的工具,有一个叫做system-config-samba的工具可以在软件管理器中获取。
一旦你下载了这个工具,你可以看到哪些文件夹是共享的,它们的权限以及是否可见。至少有一个文件夹必须可见,才能让Windows机器在网络中看到它。

无法工作 - 崩溃。 - user72056

2023年
sudo apt install wsdd

只是工作。默认情况下,它会监听所有非回环接口,但你可以编辑/etc/default/wsdd来限制它的监听位置等。
(在Ubuntu 22.04.2 LTS上测试通过)