26

我正在尝试让 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')
4

4 回答 4

35

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

sudo chown -R myuser /path/to/folder

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

于 2020-12-14T17:18:49.587 回答
14

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

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

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

$ sudo find /~~folder-path~~/ -type d -user root -exec sudo chown -R $USER: {} +~
于 2020-05-23T14:26:59.130 回答
6

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

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

解决问题的步骤:

  • 通过 Windows“程序和功能”重置(或重新安装)Ubuntu 发行版
    注意:如果您的主目录中已有数据,请先将其复制到 Windows
  • 打开 Ubuntu 并按照初始设置(创建用户)
  • 添加文件“/etc/wsl.conf”:
cd /etc
sudo touch wsl.conf
sudo nano wsl.conf
  • 从microsoft docs复制并粘贴内容
  • 使用 CTRL+X > "Y" > ENTER 保存
  • 重新启动wsl(或windows,确定;))

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

在这种情况下,重要的部分是以下行:

options = "metadata,umask=22,fmask=11"

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

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

于 2021-03-13T16:17:10.023 回答
3

这为我解决了

sudo find /home/ -type d -user root -exec sudo chown -R $USER: {}  \;
于 2021-10-22T06:48:41.847 回答