wsl2通过/mnt/挂载windows驱动器实现双向访问:linux中用/mnt/c等路径访问windows文件,windows中用\wsl$访问wsl2系统;需配置wsl.conf启用metadata支持权限,可建软链接简化路径,高级用户还能手动drvfs挂载调整选项。

如果您在WSL2中运行Linux发行版,但无法直接访问Windows主机上的文件,这通常是因为WSL2通过9P协议挂载Windows文件系统,其默认路径结构与传统Linux挂载方式不同。以下是实现双向文件访问的具体操作步骤:
一、在WSL2中访问Windows文件
WSL2自动将Windows各驱动器挂载至/mnt/目录下,例如C盘对应/mnt/c,D盘对应/mnt/d。该挂载由WSL2初始化时自动完成,无需手动配置,但需注意权限与路径大小写敏感性。
1、打开WSL2终端(如Ubuntu)。
2、输入命令 ls /mnt/ 查看已挂载的Windows驱动器列表。
3、切换至C盘根目录:输入 cd /mnt/c。
4、列出Windows用户文档目录:输入 ls /mnt/c/Users/你的用户名/Documents(用户名需替换为实际登录名)。
5、使用常规Linux命令(如cat、cp、vim)读取或复制Windows下的文本文件。
二、在Windows中访问WSL2文件系统
Windows 10版本1903及以上和Windows 11原生支持通过\wsl$网络路径访问WSL2实例的根文件系统,该路径由WSL服务动态注册,无需额外安装组件。
1、在Windows文件资源管理器地址栏中输入 \wsl$ 并按回车。
2、查看列出的WSL2发行版名称(如Ubuntu-22.04、Debian)。
3、双击进入目标发行版,即可浏览其/home、/etc、/usr等目录。
4、直接拖放文件至该窗口内,即可将Windows文件复制进WSL2文件系统。
5、右键点击任意WSL2目录,选择“属性”→“安全”,可验证当前Windows用户是否具备完全控制权限。
三、解决Windows文件在WSL2中权限异常问题
当在WSL2中修改Windows挂载点下的文件时,可能因NTFS权限与Linux UID/GID映射不一致导致操作失败或出现Operation not permitted错误。可通过配置/etc/wsl.conf启用元数据支持并设置默认UID。
1、在WSL2终端中执行 sudo nano /etc/wsl.conf。
2、输入以下内容并保存:
[automount]
enabled = true
options = "metadata,uid=1000,gid=1000,umask=22,fmask=11"
3、关闭所有WSL2终端窗口。
4、在Windows PowerShell中以管理员身份运行:wsl --shutdown。
5、重新启动WSL2发行版,再次访问/mnt/c目录,验证新建文件是否具有正确属主和可执行位。
四、使用软链接简化Windows路径访问
为避免频繁输入长路径(如/mnt/c/Users/John/Documents/project),可在WSL2用户主目录下创建指向Windows常用目录的符号链接,提升操作效率且不影响原始文件位置。
1、确认Windows用户名:在WSL2中运行 cmd.exe /c "echo %USERNAME%" 获取输出结果。
2、创建Documents软链接:输入 ln -s /mnt/c/Users/你的用户名/Documents ~/win-docs(请替换“你的用户名”)。
3、创建Desktop软链接:输入 ln -s /mnt/c/Users/你的用户名/Desktop ~/win-desktop。
4、验证链接有效性:运行 ls -l ~/win-docs,确认显示目标路径及箭头指向。
5、后续可在任意Linux命令中直接使用~/win-docs代替完整Windows路径。
五、绕过/mnt/限制直接挂载Windows分区(高级)
若需对Windows NTFS分区进行更底层控制(如启用POSIX ACL、调整日志模式),可卸载默认挂载点,改用drvfs类型手动挂载,并指定额外选项。此方法适用于需要精细权限管理的场景。
1、临时卸载C盘:在WSL2中执行 sudo umount /mnt/c。
2、创建新挂载目录:运行 sudo mkdir -p /mnt/win-c-raw。
3、以只读+大写转换模式重新挂载:输入 sudo mount -t drvfs C: /mnt/win-c-raw -o ro,case=off。
4、验证挂载效果:执行 mount | grep drvfs,确认输出包含ro,case=off参数。
5、尝试读取文件:运行 cat /mnt/win-c-raw/Users/你的用户名/Desktop/test.txt(确保test.txt存在且非空)。











