VS Code保存网络共享驱动器文件时权限错误的解决方法
问题描述
我在局域网中运行一台基于Ubuntu 22.04的本地服务器,向所有终端共享一个文件夹,同时安装了ZeroTier VPN以便远程访问。目前通过本地地址或VPN地址访问共享文件夹都正常,但在VS Code中打开文件夹并保存文件时,会触发权限错误,其他编辑器(如Sublime)或直接保存文件到网络驱动器则完全正常。
错误信息如下:
Failed to save '.env.example': Command failed: "C:\Program Files\Microsoft VS Code\bin\code.cmd" --file-write "c:\Users\feedc\AppData\Roaming\Code\code-elevated-zTqUa1mg" "\\192.168.196.241\storage\repos\node.js\airbnb-auto-email\.env.example" Error using --file-write: EPERM: operation not permitted, open '\\192.168.196.241\storage\repos\node.js\airbnb-auto-email\.env.example'
注:网络驱动器是通过与Windows当前会话不同的用户名和密码映射的。
解决思路与建议
- 禁用VS Code的原子写入功能:VS Code默认使用原子写入(先创建临时文件再替换原文件),部分网络共享环境不支持这种操作。打开VS Code设置,搜索
files.useAtomicWrites并将其设置为false,重启VS Code后尝试保存。 - 以管理员身份运行VS Code:右键VS Code图标选择“以管理员身份运行”,提升进程权限后可能能获取到网络驱动器的访问凭据。
- 重新映射网络驱动器并勾选共享权限:在Windows映射网络驱动器时,勾选“允许其他用户访问此驱动器”选项,确保VS Code进程能继承到映射的凭据信息。
- 检查Ubuntu服务器的共享配置:
- 若使用Samba共享,确认
smb.conf中对应共享项设置了writeable = yes,且配置了正确的用户权限; - 调整共享文件夹的Linux系统权限,比如执行
chmod -R 775 /path/to/shared/folder赋予读写权限,chown -R samba-user:samba-group /path/to/shared/folder确保Samba用户拥有所有权。
- 若使用Samba共享,确认
- 禁用VS Code的提升文件操作功能:打开VS Code设置,搜索
files.useElevatedFileOperations并设置为false,避免VS Code自动调用提升权限的进程写入文件,导致凭据丢失。
内容的提问来源于stack exchange,提问作者Fernando Del Cantão
相关产品推荐
相关产品推荐

