VScode 无法将文件保存在我的 WSL2 主文件夹中

Luc*_*eco 16 laravel docker visual-studio-code windows-subsystem-for-linux wsl-2

我正在尝试让 WSL2 为我的 Web 项目开发工作,这让我发疯了!

基本上,我有两个选择。1. 将我的项目文件保存到 c 驱动器并使用 WSL 访问那些文件(这使得响应非常慢) 2. 将我的项目文件保存到 /home/ 这使项目运行非常流畅,但我无法编辑这些文件VS代码。

错误如下:

Failed to save 'DefaultSeeder.php': Unable to write file 'vscode-remote://wsl+ubuntu-20.04/home/lucas/Projetos/API/src/database/seeds/DefaultSeeder.php' (NoPermissions (FileSystemError): Error: EACCES: permission denied, open '/home/lucas/Projetos/API/src/database/seeds/DefaultSeeder.php')
Run Code Online (Sandbox Code Playgroud)

小智 20

这是为您的用户提供写入文件的足够权限的另一个命令:

sudo chown -R myuser /path/to/folder
Run Code Online (Sandbox Code Playgroud)

来自https://github.com/microsoft/vscode-remote-release/issues/1008

  • 如何获取该用户?@安索纳 (2认同)

ali*_*aen 20

这为我解决了这个问题

sudo find /home/ -type d -user root -exec sudo chown -R $USER: {}  \;
Run Code Online (Sandbox Code Playgroud)

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (3认同)

Luc*_*eco 13

好吧,事实证明我很愚蠢并发布了一个愚蠢的问题。

在试图让这该死的东西工作几个小时后,我能够通过将文件夹的所有权设置为我的用户来做到这一点。

这是将所有权更改为当前登录用户的 shell 片段:

$ sudo find /~~folder-path~~/ -type d -user root -exec sudo chown -R $USER: {} +~
Run Code Online (Sandbox Code Playgroud)

  • @Lucas Pacheco,当我在文件夹路径上运行此命令时,我得到“查找:缺少‘-exec’的参数。在您的代码片段末尾是否有我错过的替换? (6认同)

Hon*_*iao 7

就我而言,我也无法通过文件资源管理器直接编辑/删除任何文件,而不仅仅是 VSCode。

在 Windows 上打开 Ubuntu 22.04.1 LTS 后,运行

sudo chown -R my_username my_folder
Run Code Online (Sandbox Code Playgroud)

注意这my_username是Ubuntu中的用户名。

这解决了我的问题。


wam*_*aro 6

我遇到了同样的问题,花了几个小时才找到这个可行的解决方案。
对我来说,这似乎是正确的,因为它不会产生以下问题:1. 随后发送到 git 的文件权限过于慷慨,2. 更改 ubuntu 配置以适应 Windows 环境(与 Windows 用户耦合)。

我在github上找到了这个解决方案的来源。感谢萨尔扎乌尔! https://github.com/microsoft/WSL/issues/4260#issuecomment-729594527

解决问题的步骤:

  • 通过 Windows“程序和功能”重置(或重新安装)Ubuntu 发行版
    注意:如果您的主目录中已有数据,请先将其复制到 Windows
  • 打开 Ubuntu 并遵循初始设置(创建用户)
  • 添加文件“/etc/wsl.conf”:
cd /etc
Run Code Online (Sandbox Code Playgroud)
sudo touch wsl.conf
Run Code Online (Sandbox Code Playgroud)
sudo nano wsl.conf
Run Code Online (Sandbox Code Playgroud)

下次启动 ubuntu 时,将应用 wsl.conf 中的设置。

本例中的重要部分是以下行:

options = "metadata,umask=22,fmask=11"
Run Code Online (Sandbox Code Playgroud)

它设置所有新创建的文件将使用 umask 22 (chmod 775) 和 fmask 11 (chmod 644)

此设置也适用于 VSCode 和 PHPStorm 等 IDE。
快乐编码 - 终于!^^