Problem
Come cross a problem in wsl2 to use vscode.
未能保存“settings.json”: 无法写入文件/code/.vscode/settings.json(NoPermissions (FileSystemError): Error: EACCES: permission denied
Solution
In official documentation, I found this:
在stackoverflow上,看到的这个解决方法 在/etc下面新建wsl.conf文件,然后对其进行配置
cd /etc
sudo vim wsl.conf
然后就是vim中复制进去信息(可见下文)即可
主要的是文件的权限的配置
官方文档(参考链接)中复制出来:
[automount]
enabled = true
root = /
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"
mountFsTab = true
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false
[interop]
enabled = false
appendWindowsPath = false
[user]
default = DemoUser
[boot]
command = service docker start
但是完全照抄会有如下问题,只怪自己没有仔细阅读。
PS E:\shizheng_coding\software_design_venkat\reference_text_books\book_code_functional_prog_Java_venkat> wsl
<3>init: (278) ERROR: CreateProcessEntryCommon:336: getpwnam(DemoUser) failed 0
<3>init: (278) ERROR: CreateProcessEntryCommon:517: chdir(/e/shizheng_coding/software_design_venkat/reference_text_books/book_code_functional_prog_Java_venkat) failed 13
其实,需要将上面官方文档中的配置修剪一下,只剩下自己需要的上面的报错就会消失
[automount]
enabled = true
options = "metadata,umask=22,fmask=11"
mountFsTab = true
这里的核心点是 all newly created files will use umask 22 (chmod 775) and fmask 11 (chmod 644),意思是所有新创建的文件都可以有775的权限,可读可写。
然后我把之前permission denied的文件:.vscode/settings.json 删掉了
sudo rm -r .vscode/
然后重新运行java项目,会生成新的json文件,此时不会报错
Reference
https://stackoverflow.com/questions/61973385/vscode-unable-to-save-files-inside-my-wsl2-home-folder
https://docs.microsoft.com/en-us/windows/wsl/file-permissions
总结
遇到问题,解决之,记录之,经验重复使用,以免重蹈覆辙,反复踩坑。
|