通过windows资源管理器访问wsl中Ubuntu的资源目录时权限不够的问题
项目场景:
我们会经常使用虚拟机开发部署项目,为了方便和效率可能会使用到WSL,同时可能需要把Windows系统下开发好的项目打包上传到虚拟机,WSL提供了与Windows文件系统互相访问的机制。
问题描述
但是在文件上传和下载时可能会遇到权限不够的问题。如图
wsl.localhostUbuntu oot 无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。试图访问无效的地址。
原因分析:
因此,我查找了WSL官方文档(WSL 的文件权限 | Microsoft Learn),发现其给出如下解释
即Windows访问Linux的文件的权限是由WSL分发版(如Ubuntu)的默认用户决定的,安装WSL分发版时会创建一个用户,一般会使用该用户登录,因此我们需要修改默认用户。
解决方案:
在终端使用如下命令将默认用户变更为root(注意:ubuntu处需要根据你安装的Linux版本改变,可用如下命令查看你的Linux发行版名称),然后使用wsl命令打开Linux终端,正常来说就会以root用户登录,同时也可以直接在Windows的资源管理器中以root身份访问Linux文件。
拥有root权限可能会对虚拟机的安全造成威胁,例如从Windows入侵Linux文件系统。因此建议在执行完相关文件上传任务后,将默认用户改为普通用户(也可以改变需要访问的文件或文件夹的权限,例如sudo chmod 777 XXX,但会相对麻烦)。
如果执行以上命令后仍未变更默认用户,则可能是在Linux中使用了配置文件,使用如下命令查看并注释掉相关配置即可。(有时可能需要重启wsl)