在适用于 Linux 的 Windows 子系统 (Ubuntu) 中安装 SMB 共享

在适用于 Linux 的 Windows 子系统 (Ubuntu) 中安装 SMB 共享

如何从在 Windows Subsystem for Linux (WSL) 中运行的 Ubuntu 连接到 SMB 共享?

我花了一段时间才筛选完,这些年来已经发布了很多问题和答案,有些让我走上了正确的道路,但我仍然花了一天多的时间才完成。

首先这是我的设置:

客户:Windows 10 家庭版 20H2 19042.804 | Ubuntu WSL 20.04.2 LTS 版本 20210222
服务器:FreeBSD 12.1-发布
网络:C 类

目的

简而言之,我的目的是在我的计算机和虚拟机上的各个帐户之间建立统一的主目录。

换句话说,这是一个非常简单的设置,但我的目的是让我的所有机器都有一个主目录。所以现在,我的 Windows 机器上的主目录与我的 FreeBSD 服务器上的主目录相同,现在,最终,也与我在 Ubuntu 上的 WSL Linux 帐户上的主目录相同。

这样做的好处显而易见:很多工作起来更舒服。我的 Android 手机上还有一个文件管理器,名为 CX File Manager,可以连接到我的 NFS 共享,因此当我的手机容量满了时,将所有图片和视频放在我的服务器上是轻而易举的事!我只需将 DCIM 文件夹移动到 SMB 共享,它就会在我睡觉时在后台执行此操作,或者其他时候。

方法

你们中的一些人可能已经流口水了,下面就是具体方法。

  1. 您的 NFS 共享必须作为驱动器添加到您的 Windows 帐户。进入文件资源管理器 > 映射网络驱动器 > 输入信息,分配驱动器号。我的是 Z:,用于我的个人主目录。

  2. 然后在 Ubuntu 的 WSL 中将此行添加到 /etc/fstab

    //192.168.0.110/ /home/ drvfs auto,rw,nosuid,exec,uid=<1000>,gid=<1000> 0 0

当然,你需要输入正确的名称,即用户的 UID/GID在您的服务器上,并确保它符合您的要求,但本质上就是这样!

解释

由于 Ubuntu for Linux 不支持 CIFS,因此您需要使用 drvfs,而不是直接从 Ubuntu 安装共享。您还可以指定驱动器号而不是 SMB 共享名称(Z: 而不是 192.168.0.110),但这会让您无法再在 Windows 中使用该驱动器,Ubuntu 会完全控制该驱动器,并且它在 Windows 中显示为断开连接,因此这不是很有用。

它不应该起作用

这没有任何文档支持,但您的凭据已存储在 Windows 中。正如我们所见,您可以指定 Windows 驱动器号而不是共享名称,这样也可以工作,但 Windows 会将该驱动器视为繁忙,但我们知道 drvfs 正在“使用这些凭据”,或者至少它是通过已与您的凭据连接的 Windows SMB 共享进行安装的。不知何故,指定共享名称而不是驱动器号允许我们同时在 WSL 和 Windows 中使用该驱动器。

我刚刚设法让它工作,我没有看到任何冲突、同步问题等。但如果你不太苛刻,它应该可以正常工作。现在,大多数代码编辑器都可以识别文件的外部更改,这可能就是它即将发生的情况。我刚刚用 vi 测试过,它说文件已被修改,Windows 立即在共享上看到了该文件……看起来它工作得相当稳定。

答案1

方法

这是上面的文字,但有些人可能已经流口水了,所以下面是具体方法。

  1. 您的 NFS 共享必须作为驱动器添加到您的 Windows 帐户。进入文件资源管理器 > 映射网络驱动器 > 输入信息,分配驱动器号。我的是 Z:,用于我的个人主目录。

  2. 然后在 Ubuntu 的 WSL 中将此行添加到 /etc/fstab

    //192.168.0.110/ /home/ drvfs auto,rw,nosuid,exec,uid=<1000>,gid=<1000> 0 0

当然,您需要插入正确的名称、服务器上用户的 UID/GID,并确保它符合您的要求,但本质上就是这样!

相关内容