虚拟机中配置文件夹共享是一种十分便利的操作,能够实现跨环境对同一文件直接访问而不必反复压缩传递副本。同时文件共享支持改动热同步,这在维护复杂文件例如交叉编译环境中尤为实用。本文以VirtualBox中Ubuntu环境演示配置文件共享的几种方式以及权限管理。

环境

  • 宿主机 Windows 10
  • 虚拟机 Ubuntu 18.04.2
  • 虚拟化工具 VirtualBox 6.1

配置文件共享

对于正在运行的虚拟机,在设备-共享文件夹中打开编辑。
在这里插入图片描述

  • 共享文件夹路径:宿主机中想要共享的文件夹路径。
  • 共享文件夹名称:宿主机中想要共享的文件夹名称,选择上一项后自动填充。
  • 挂载点:共享文件虚拟机中出现的位置。对于Liunx是路径;对于Windows是盘符。
  • 只读分配:虚拟机对被共享文件只有读权限。
  • 自动挂载:虚拟机启动后自动将共享文件夹载入到挂载点。(如果挂载点不存在或留空将会交由虚拟机自动处理。默认Linux是挂载到/media/sf_myfiles,Windows是从Z:开始寻找未被使用的盘符。)
  • 固定分配:共享会被保存到设置中,否则本次共享是一次性的,重启机器后不再共享。

在这里插入图片描述
也可以在宿主机的命令行中使用如下格式的代码配置文件共享:
VBoxManage sharedfolder add "VM name" --name "sharename" --hostpath "C:\test"
可选参数:--transient非固定分配。--readonly只读分配。
符号链(软连接)如果宿主机是Linux环境,使用
VBoxManage setextradata "VM name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/sharename 1
可以让文件共享变为符号链实现而非索引节点。

访问权限控制

出于安全考虑,VirtualBox创建的共享文件夹默认所属组为vboxsf,对非root用户做了读写权限限制,故非root用户每次访问时需要密码且不能随意拷贝。
在这里插入图片描述
root用户不受影响,否则可以通过以下几种方式获得对共享文件夹的完全控制

手动挂载

将共享的文件重新挂载到本用户指定的位置

sudo mount -t vboxsf -o uid=1000,gid=1000 sharename /home/<user>/vboxshare

  • -o uid=1000,gid=1000 指定用户,可以省略。
  • sharename 共享文件名,也即默认挂载位置。
  • /home/<user>/vboxshare 本用户指定的新位置。

完成后可以在新位置找到被挂载的共享文件,此时已经拥有完整操作权限。

群组控制

将用户加入vboxsf组,获取所有共享文件权限,重启后生效。
sudo usermod -aG vboxsf username
可以使用$(whoami)指定当前用户
组数据库默认位置:/etc/group

复制样本

使用cp -r dir1 dir2命令将共享文件从挂载点拷贝到其他位置再获取权限。注意,这种方式本质上没有修改共享文件,仅仅是文件的单方面传递而非共享


文件共享相当于C语言中的指针传递,每个受共享的用户本质上都是在对同一份文件进行操作,所以设置严格的权限控制能够避免意外地修改文件。


How to access a shared folder in VirtualBox?
VirtualBox manual Chapter 4. Guest Additions.
常用linux用户管理指令
VirtualBox命令行工具的使用

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐