在Windows Subsystem for Linux中挂载Windows共享

Dav*_*man 11 linux bash ubuntu mount windows-subsystem-for-linux

我想从WSL(Windows Subsystem for Linux)中安装Windows服务器.在Ubuntu(带有统一界面)我可以输入

gvfs-mount smb://domain\;user@server/share
Run Code Online (Sandbox Code Playgroud)

一切都安装得很好.

如果我在WSL中尝试这个,那么我得到以下错误:

Error mounting location: volume doesn't implement mount
Run Code Online (Sandbox Code Playgroud)

LaV*_*che 23

假设主机Windows操作系统可以访问"\ servername\sharename"中的文件共享,请在bash中尝试此命令,不确定是否需要root:

mkdir /mnt/mountedshare
mount -t drvfs '\\servername\sharename' /mnt/mountedshare
Run Code Online (Sandbox Code Playgroud)

单引号很重要!

使用SharePoint Online UNC路径为我工作.但权限很棘手.我可以浏览文件夹并查看文件名,无法读取文件.所以需要弄清楚权限的事情.如果你随处可见,请告诉我.

  • 我知道 `mount -t drvfs '<drive letter>:' /mnt/mountpoint` 是对普通磁盘分区执行此操作的方法,但从未想过简单地使用 UNC 路径代替驱动器号会自动起作用还有!非常感谢+1!:D (3认同)
  • 我不知道你们其他人怎么想,但从 WSL 连接到 SMB 共享的唯一选择是使用驱动器号语法(如下面 gabuzo 所回答)。如果我在单引号 '\\uncsharename\z' 中使用 unc 驱动器语法,则会收到此错误(我正在使用 Windows 10 v2004 Ubuntu 16 LTS 中的 WSL2)`mount: /mnt/z: 错误的 fs 类型,错误的选项、 \\uncsharename\z 上的超级块损坏、缺少代码页或帮助程序或其他错误。<3>init: (8787) 错误: UtilCreateProcessAndWait:489: /bin/mount 失败,状态为 0x2000 无错误信息` (2认同)

小智 11

安装 SMB 服务器共享应该很简单,我在 Windows build 1909 和 WSL 2.0 Ubuntu 20.04.1 LTS (GNU/Linux 4.19.128-microsoft-standard x86_64) 上对此进行了测试。您可以像往常一样使用 mount :

sudo mount -t drvfs '\\server\share' /your/mount/folder
Run Code Online (Sandbox Code Playgroud)

没什么太难的,挂载的源路径是常规的 UNC 路径名。重要的部分是文件系统类型(“驱动器文件系统”?)以及您需要将服务器路径括在单引号中(在命令行上)。与往常一样,您的安装文件夹也必须存在。

这个 WSL 问题上,我发现了很好的选项 (-o),它们似乎非常适合在不使用 sudo 的情况下创建、读取和写入文件以及读取正确的修改/创建日期:

metadata,rw,noatime,uid=1000,gid=1000,umask=22,fmask=11
Run Code Online (Sandbox Code Playgroud)

因为我喜欢始终安装该服务器,所以我将安装指令放入/etc/fstabWSL 自动安装它:

\\server\share /your/mount/folder drvfs metadata,rw,noatime,uid=1000,gid=1000,umask=22,fmask=11 0 0
Run Code Online (Sandbox Code Playgroud)

(您可以使用 重新加载 fstab sudo mount -a

请注意,我已登录 Windows 本身的服务器并让它记住用户和密码。@David C. Rankin 的答案有一些关于如何指定用户名和密码(如果您需要单独执行)的信息。


Dav*_*ica 7

虽然您已经通过 WSL 中为您创建了一个到 Windows 主机的挂载/mnt/c,但如果您想从另一台计算机挂载共享,那么您将需要创建挂载点,例如

sudo mkdir -p /mnt/somename
Run Code Online (Sandbox Code Playgroud)

然后,您需要smb://使用以下命令在该安装点安装远程共享文件系统mount.cifs

sudo mount.cifs //server/sharename /mnt/somename
Run Code Online (Sandbox Code Playgroud)

或者,您可能需要包含以下选项,/mnt/somename例如

-o username=yourname,uid=YOURUID,noperm,password=yourpassforremoteshare
Run Code Online (Sandbox Code Playgroud)

如果您尝试安装的是较旧的 WinXP 共享,则需要NTLMv1通过包含sec=ntlm或 来启用身份验证sec=ntlm1。请参阅参考资料mount.cifs进一步使用该sec=选项。


gab*_*uzo 5

实际上,如果您的Windows共享已经映射到Windows主机中的驱动器,则它甚至可以更加简单。假设您已经在上挂载了共享Z:。在这种情况下,以下方法将起作用:

sudo mkdir /mnt/z
sudo mount -t drvfs 'Z:' /mnt/z
Run Code Online (Sandbox Code Playgroud)