我家的网络如下:
- 文件服务器 -> Ubuntu 18.04
- 工作站/游戏装备 -> Windows 10
- 开发笔记本 -> Ubuntu 18.04
我希望我的共享文件能够轻松地在我的两台机器上工作,并且也能让任何接入网络的人(如室友等)使用。
文件服务器在 raid 1 中有 2x 120gb SSD 用于启动,在 raid 1 中有 2x 2tb HDD 用于我的开发文件(称为 Dev),还有一个备用的 2tb 驱动器,用于我家中的网络可访问媒体(称为 Media)。
我已通过打开每个文件夹并进入属性并启用共享、授予所有权限以及检查来宾访问权限并允许其他人在此文件夹中创建和删除文件来共享这些文件夹。我确实计划稍后更改开发驱动器上的权限,但我只需要先让它工作即可。
我可以从我的笔记本电脑进入文件->其他位置并查看那里的服务器,我可以单击共享并访问我的文件。
在 Windows 上,如果我打开资源管理器并单击“网络”,则看不到服务器。我真的希望它出现在这里,因为我不想手动映射驱动器,我希望文件易于访问。
如何使网络驱动器在 Windows 10 的网络下可见?我需要使用 Samba 吗?还是我使用的共享方法很好?
答案1
如果有人感兴趣的话,我有一个关于 Windows 10 的替代方案。我在启动板中将其作为错误/功能请求提交: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1831441
github 上已经存在一些已经创建好的内容。可以在 Ubuntu 中使用它,但需要做一些工作来实现:
[1]下载文件:
wget https://github.com/christgau/wsdd/archive/master.zip
[2] 解压:
unzip master.zip
[3] 重命名python脚本
sudo mv wsdd-master/src/wsdd.py wsdd-master/src/wsdd
[4] 复制到/usr/bin
sudo cp wsdd-master/src/wsdd /usr/bin
[5] 软件包中已经提供了 systemd 服务文件,只需将其复制到正确的位置即可:
sudo cp wsdd-master/etc/systemd/wsdd.service /etc/systemd/system
[6] 必须编辑 wsdd.service 文件以删除对 nobody 用户的引用:
#User=nobody
#Group=nobody
[7]然后启用服务:
sudo systemctl daemon-reload
sudo systemctl start wsdd
sudo systemctl enable wsdd
现在Win10可以使用自己原生的WSD协议发现Ubuntu服务器,无需在客户端启用smb1。
答案2
[1] 听起来你已经在使用 Samba。请运行以下命令进行验证:
net usershare info --long
[2] Ubuntu 18.04 使用 mDNS ( Avahi ) 自动将您的 samba 服务器“注册”到网络的其余部分。所有其他 Linux 机器以及 macOS 都可以自动“发现”此注册。
[3] Win10 无法发现您的服务器的原因是,虽然它可以使用 mDNS,但它不知道如何自动扫描网络。相反,它使用 NETBIOS,这存在多个问题:
[a] Win10 在客户端(以及服务器端)禁用 SMB1,并且 NETBIOS(主机名发现而非名称解析)和 SMB1 是相互关联的 - 缺一不可。您可以通过以下方式重新启用它:控制面板 > 程序和功能 > 打开或关闭 Windows 功能 > SMB 1.0/CIFS 文件共享支持 > SMB 1.0/CIFS 客户端。
[b] 但您必须遵守 NETBIOS 规则 - 即您的主机名长度不能超过 15 个字符 - 等等。这些事情可以在 smb.conf 中更正。您可以做的是编辑 /etc/samba/smb.conf 并在 workgroup = WORKGROUP 行下方添加这两行:
netbios name = ubserv1804
name resolve order = bcast host lmhosts wins
然后按此顺序重新启动 samba:
sudo service smbd restart
sudo service nmbd restart
然后等待大约 10 分钟左右 - 认真的说。NETBIOS 非常原始,重新启动 nmbd 会导致 Windows 混乱,需要一段时间才能恢复正常。