如何通过WSL让Windows访问Ubuntu中的FUSE挂载目录
我之前也碰到过一模一样的问题!WSL2的9P文件共享默认对FUSE挂载目录的支持不太友好,核心是权限和服务访问限制的问题,咱们一步步来解决:
首先,调整sshfs的挂载参数,这是最关键的一步。你之前加了
allow_other和default_permissions,但还差指定用户ID的参数——因为9P服务是以系统用户身份运行的,得让它能识别挂载目录的所有者。用这个命令重新挂载试试:sshfs 你的远程用户@远程主机:/远程目录路径 /media/remote1 -o allow_other,default_permissions,uid=$(id -u),gid=$(id -g)给你拆解下关键参数的作用:
allow_other:打破FUSE默认的“仅挂载用户可访问”限制,让WSL的系统服务用户也能访问这个挂载点default_permissions:交给Linux内核处理权限检查,而不是让sshfs自行处理,这样9P服务能正确识别权限规则uid=$(id -u)和gid=$(id -g):把挂载目录的所有者绑定到你的当前Ubuntu用户,避免跨用户的权限不匹配
然后,配置WSL的9P共享参数。咱们需要修改WSL的全局配置,让它能正确处理FUSE挂载的文件元数据。打开Ubuntu终端,创建或编辑
/etc/wsl.conf文件:sudo nano /etc/wsl.conf把下面的内容粘贴进去(如果已有部分配置,补充缺失项即可):
[automount] enabled = true options = "metadata,umask=0077,uid=1000,gid=1000" mountFsTab = true [interop] enabled = true appendWindowsPath = true重点是
automount段里的metadata参数,它能让9P服务正确读取文件的权限、所有者等元数据,这是Windows能正常访问的核心前提。接下来,重启WSL让配置生效。打开Windows的PowerShell或CMD,运行这条命令关闭所有WSL实例:
wsl --shutdown之后重新打开Ubuntu终端,用刚才的sshfs命令重新挂载远程目录。
最后,验证挂载目录的权限。在Ubuntu里运行:
ls -ld /media/remote1确保输出里的所有者是你的用户名,权限至少是
rwxr-xr-x(也就是755),这样9P服务才有足够权限访问并共享给Windows。
如果还是不行,先执行fusermount -u /media/remote1卸载挂载,再重新挂载一次确认参数没加错。另外也可以尝试更新WSL到最新版本(Windows里运行wsl --update),旧版本的WSL2可能存在9P和FUSE的兼容性bug。
备注:内容来源于stack exchange,提问作者Brian H.




