vbox两步解决VirtualBox共享文件夹在Windows下的符号链接创建问题

默认情况下,VirtualBox 的共享文件夹特性在 Windows 下工作是有问题的,如果你运行一些需要符号连接(Symlink)的程序,比如默认设置的 yarn 或者 npm,由于 npm 包在安装之后会在 ./node_modules/.bin 创建在 package.json 中定义好的应用入口的符号连接,它会在最后一步报错。这是一个困扰了非常久的问题,我因此在这几年也一直在用 vmdk(虚拟磁盘)挂载到虚拟机上来存数据,但这样是一种非常不安全的使用方式,因为 vmdk 备份起来太难受了,粒度太大没法增量,硬盘一旦出问题很容易整个虚拟磁盘 GG,今天无意中想到了一个关键的 Windows 的权限问题(下面会说),这个问题才得以解决。

下面来讲一下如何解决这个问题。

对相应虚拟机实例启用符号链接特性

如果想正常使用符号链接,需要对虚拟机设置 VBoxInternal2/SharedFoldersEnableSymlinksCreate/<share_folder_name> 这个 extradata,这里顺带一提,对于 vagrant,这个选项只要你运行 vagrant up之后这个选项便是自动设置好的。设置这个 extradata 可以使用 VboxManage,这个工具在 Windows 下是和 VirtualBox 图形界面在一个相同目录的,可以使用 Powershell cd 到这个目录,然后运行

.\VBoxManage.exe setextradata "[虚拟机名]" VBoxInternal2/SharedFoldersEnableSymlinksCreate/共享文件夹名称 1

注意这个共享文件夹名称是你在 VirtualBox 中设置共享时对应的“共享文件夹名称”一栏的内容,不是相应文件夹的路径或者文件夹名称。

配置 Windows 权限,允许非 Administrator 用户创建符号连接

到这里基本很多教程都结束了。但也可能很多人发现这么做之后创建符号连接依然是无法使用的状态,会报错

ln: failed to create symbolic link "name": Protocol error

这是因为 Windows 的默认配置,非 Administrator 用户是没有创建符号连接权限的(至少在我的 Win10 20h2 上是这样,不太清楚其他版本是怎么设计的)

解决这个问题有两种办法

  1. VBoxHeadless 等相关实际承载虚拟机实例的进程用 Administrator 用户运行。
  2. 配置本地安全策略,允许其他用户创建符号连接

至于第一种方法,我不太了解 Windows 的一些权限与进程模型设计,我尝试直接管理员运行 VirtualBox GUI 发现似乎并没有生效,并且看对应进程也没在相应用户下。

于是我使用了第二种方法即去改本地安全策略。方法如下

  1. 运行secpol.msc打开本地安全策略
  2. 依次进入本地策略->用户权限分配,选择创建符号连接
  3. 添加你当前的用户,保存退出,注销当前用户重新登陆

所以说就很奇怪啊!为什么 Windows 默认连符号连接的权限都不给低权帐户啊!

我按照这样测试之后尝试创建符号连接已经没有任何问题了。

附上我目前的软件版本

  • Win10 20h2
  • VirtualBox 7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/570657.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11、【桥接模式】让将抽象和实现分离,使得它们可以独立地变化

你好&#xff0c;我是程序员雪球。 今天我们来聊聊 23 种设计模式中&#xff0c;一种常见的结构型模式&#xff0c;桥接模式。聊聊它的设计思想、应用场景&#xff0c;以及如何使用。 一、设计思想 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#…

C++ 之二叉搜索树

目录 学习目标&#xff1a; 1.二叉搜索树 1.1二叉搜索树的概念 1.2二叉搜索树的操作 1.二叉搜索树的查找 2.二叉树的插入 3.二叉树的删除* 2.二叉搜索树的实现 3.二叉树性能分析 1.二叉搜索树 1.1二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵…

spring的bean创建流程源码解析

文章目录 IOC 和 DIBeanFactoryApplicationContext实现的接口1、BeanFactory接口2、MessageSource 国际化接口3、ResourcePatternResolver&#xff0c;资源解析接口4、EnvironmentCapable接口&#xff0c;用于获取环境变量&#xff0c;配置信息5、ApplicationEventPublisher 事…

Java文件流练习

1 扫描指定目录&#xff0c;并找到名称中包含指定字符的所有普通文件&#xff08;不包含目录&#xff09;&#xff0c;并且后续询问用户是否要删除该文件 import java.io.File; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanne…

Windows 10 安装配置WSL2(Ubuntu 20.04)教程

Windows 10 安装配置WSL2&#xff08;Ubuntu 20.04&#xff09;教程 一、WSL简介 WSL&#xff08;Windows Subsystem for Linux&#xff09;是一个兼容层&#xff0c;允许在Windows 10上原生运行Linux二进制可执行文件。 二、安装WSL2 3.1 传统手动安装 更新系统&#xff…

技术速递|Java on Azure Tooling 3月更新 - Java on Azure 开发工具未来六个月路线图发布

作者&#xff1a;Jialuo Gan - Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎阅读 Java on Azure 工具的三月更新。在本次更新中&#xff0c;我们将分享未来几个月对 Java on Azure 开发工具的投资。此外&#xff0c;我…

无限多交换机串联,可以将网线无限延长吗?

网线使用时为了网络质量一般不超过100m&#xff0c;那我每隔100m接一个交换机是不是就可以无限延长了&#xff1f; 完全没有问题。 但是慎用无限、永远、永恒这些字眼&#xff0c;“爱你到永远”这句山盟海誓&#xff0c;看看现在的离婚率就知道有多么不靠谱。 但是&#xff…

MySQL数据库精讲001——概述

MySQL数据库精讲001——概述 文章目录 MySQL数据库精讲001——概述1.1 安装1.1.1 版本1.1.2 安装一、下载二、解压三、配置1. 添加环境变量2. 初始化MySQL3. 注册MySQL服务4. 启动MySQL服务5. 修改默认账户密码 四、登录MySQL五、卸载MySQL 1.1.3 连接1.1.4 企业使用方式(了解)…

共享单车(二):项目日志

stdin, stdout, stderr Linux系统下&#xff0c;当一个用户进程被创建时&#xff0c;与之对应的三个数据流&#xff08;stdin&#xff0c;stdout和stderr&#xff0c;即三个文件&#xff09;也会被创建。 stdin&#xff0c;标准输入文件&#xff0c;通常对应着终端的键盘。 s…

SpringBoot内容协商机制(就是接受数据的类型如json,xml)

目录 一、基于请求头的内容协商机制 二、基于请求参数的内容协商机制 一、基于请求头的内容协商机制 如果我们的Java服务为浏览器和安卓手机同时提供服务&#xff0c;浏览器期望接受的请求是JSON格式&#xff0c;安卓客户端期望接收的请求是XML格式&#xff0c;这个时候是否需…

Linux Shell字符串截取#与%使用

背景Jenkins需要解析gerrit的commit message中特殊字段的值&#xff0c;比如Depend-On&#xff1a;字段的值 比如commit msg内容如下&#xff1a;用变量msg表示 1. # 号截取, 截取指定字符保留右边的字符串&#xff0c;删除左边的部分。分为#和##两种 1.1 # 号截取&#xff0c…

Linux文件系统/企业文件系统选型/企业常规服务应用建议/软件及软件安装包管理,rpm,yum系列知识--12272字详谈

这里先补充一下上一节的命令&#xff1a; tune2fs 调整或查看ext2/ext3/ext4文件系统的参数&#xff08;关闭ext4日志功能&#xff09; 现在已经被淘汰但是企业笔试或者认证考试会存在 dumpe2fs 用于导出ext2&#xff0c;ext4&#xff0c;ext3文件系统信息&#xff08;文件系统…

自己写的爬虫小案例

网址&#xff1a;aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …

时序分析基础(6)——input delay时序分析

1 简介 FPGA对于外部的时钟以及数据的延时信息是不知道的&#xff0c;在低速时钟且时钟发射沿在数据正中心的时候&#xff0c;一般可以不做约束来直接使用。但是到了高速时钟或者双沿采样或者发射沿和数据对齐的情况下&#xff0c;这时候就需要告诉VIVADO外部的时钟与数据情况来…

[Meachines][Medium]IClean

Main $ nmap -p- -sC -sV 10.10.11.12 -Pn --min-rate 1000 $ echo "10.10.11.12 capiclean.htb">>/etc/hosts 这题可能和python的SSTI有关 $ gobuster dir --url "http://capiclean.htb" --wordlist /usr/share/seclists/Discovery/Web-Content/c…

授权协议OAuth 2.0之通过OIDC实现SSO

写在前面 本文来一起看下OIDC&#xff08;openid connect&#xff09;相关内容。 1&#xff1a;什么是OIDC OIDC的全称是openid connect&#xff0c;和OAuth2.0一样&#xff0c;也是属于协议和规范的范畴。OAuth2.0是一种授权协议&#xff0c;即规定了what you can do的内容…

2024 证券从业资格证考试备考资料分享

2024 证券从业资格证考试备考资料分享 2024 年 06月1、2日 证券从业资格考试全国统一考试&#xff08;统考&#xff09;&#xff0c;预计将于5月初&#xff08;考前一个月&#xff09;左右开启报名 有没有小伙伴在准备备考的&#xff0c;不知道大家都准备怎么学习呢&#xff…

前端css中keyframes(关键帧)的简单使用

前端css中keyframes的使用 一、前言二、例子&#xff08;一&#xff09;、例子源码1&#xff08;二&#xff09;、源码1运行效果1.视频效果2.截图效果 三、结语四、定位日期 一、前言 关键帧keyframes是css动画的一种&#xff0c;主要用于定义动画过程中某一阶段的样式变化&am…

【小白误闯】这可能是对 Tomcat 工作原理解释最详细的文章

脑子一闪而过&#xff0c;当年 V 哥在面试 Java 开发时&#xff0c;被问到让你写一个 Tomcat 服务器&#xff0c;你有什么想法&#xff1f;尼码&#xff0c;面试官摆明是在压工资了&#xff0c;你得逞了&#xff0c;我回答不上来&#xff0c;当时也没研究过 Tomcat 的源码&…

Codeforces Round 940 E. Carousel of Combinations 【威尔逊定理】

题意 给定一个正整数 n n n&#xff0c;定义 C ( i , j ) C(i, j) C(i,j) 为&#xff1a;从 ( 1 , 2 , 3 , . . . , i ) (1,2,3,...,i) (1,2,3,...,i) 中选出 j j j 个不同的数&#xff0c;构成一个圆排列的不同的方案数 求出&#xff1a; ∑ i 1 n ∑ j 1 i ( C ( i ,…