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