默认情况下,VirtualBox共享文件夹对客户机具有读写权限。可以通过主机上的命令行来完成此操作:
VBoxManage sharedfolder add "VM name" --name sharename --hostpath "C:\test"
通过添加选项--readonly
,我们可以限制只能以只读方式访问这些共享文件夹。如果您只希望在当前会话中显示这些共享文件夹,但不希望它们在后续会话中保持持久性,请使用--transient
选项。对于共享文件夹存在一些限制(有关详细信息,请参见this question)。如果满足先决条件,我们可以通过在虚拟机中运行以下命令手动挂载这些共享文件夹:
mkdir /home/<user>/vboxshare
sudo mount -t vboxsf -o uid=1000,gid=1000 sharename /home/<user>/vboxshare
当然,我们也可以使用不同的挂载选项来以只读方式挂载,或者仅将根目录设置为具有读取权限的方式进行挂载。
通过Virtual Box Manager自动挂载
如果我们在Virtual Box Manager中启用了自动挂载功能,并从中创建了共享文件夹,这些共享文件夹将自动在客户机中挂载,挂载点为/media/sf_<name_of_folder>
。要访问这些文件夹,客户机中的用户需要成为vboxsf
组的成员。
sudo usermod -aG vboxsf $USER
客人需要重新启动才能添加新的组。
来源和进一步阅读:Virtual Box 用户手册。
/media
目录,但仍然没有看到任何内容。 - amphibient/media/
目录下看到文件夹。 - David_Gsudo adduser your_username vboxsf
。 - Jordan Broughusers-admin
。该命令被另一个用户编辑过。 - Takkatsudo mount -t vboxsf -o uid=1000,gid=1000 share /home/<user>/vboxshare
,我没有看到 sharename
的提及,而在使用 VBoxManage sharedfolder add "VM name" --name "sharename" --hostpath "C:\test"
创建共享文件夹时是需要用到的。如果有多个共享文件夹,VirtualBox 如何知道将 vboxshare
文件夹与哪个 sharename
关联起来?或者你是指 sharename
应该与 vboxshare
相同吗? - alpha_989share
和"sharename"
是一样的,但你应该为挂载点~/vboxshare
选择一个不同的名称。不同的共享需要不同的挂载点。 - Takkatshare
应该改成 sharename
,以保持命名的一致性。 - alpha_989sudo usermod -aG vboxsf 用户名
然后重新启动用户以便能够访问它。 - montss/media
目录下的ISO文件,或按下左Ctrl+Dadduser
命令后,您必须重新启动计算机。 - kolsudo adduser your_username vboxsf
是我通过VirtualBox界面添加的共享目录访问命令。 - apadernosudo mount /dev/cdrom /media/cdrom
sudo apt-get install make gcc linux-headers-$(uname -r)
sudo /media/cdrom/VBoxLinuxAdditions.run
~$ echo $USER;
ahmed
~$ sudo usermod -a -G vboxsf ahmed
请知道你共享文件夹的标签是lpi
(例如):
sf_
。然后,你会在/media/sf_lpi
下找到你的共享文件夹。
最后,你还可以创建一个指向你的主页的链接。例如:
ln -s /media/sf_lpi /home/ahmed/lpi
:)
使用vBox图形界面将共享文件夹添加到虚拟机中 确保选择自动挂载和永久保存
使用root账户登录虚拟机
检查vboxsf组是否存在
~$ grep vboxsf /etc/group
vboxsf:x:125:
检查用户是否已经在vboxsf组中。
~$ id nilo
uid=1000(nilo) gid=1000(nilo) groups=1000(nilo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare)
将用户nilo添加到vboxsf组中。
~$ sudo usermod -a -G vboxsf nilo
请再次检查用户组。
~$ id nilo
uid=1000(nilo) gid=1000(nilo) groups=1000(nilo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare),125(vboxsf)
重新启动并登录为nilo。
共享文件夹现在可以在/media/sf_dropbox中访问(dropbox是我给共享命名的名称)。
在主机操作系统(Windows)和客户操作系统(Ubuntu,虚拟机)之间共享文件夹
步骤1 从VirtualBox菜单中安装Guest Additions,进入Devices->Install Guest Additions 这将在/media/cdrom上挂载一个虚拟CD。以root用户身份使用“Open with terminal”选项打开此/media/cdrom添加的文件夹(右键点击)。
步骤2 运行程序VBoxLinuxAdditions.run。当程序完成后重新启动VirtualBox。
$ sudo ./VBoxLinuxAdditions.run
第三步
创建一个共享文件夹。在虚拟菜单中转到设备->共享文件夹,然后在列表中添加一个新的文件夹,此文件夹应该是您希望与Ubuntu(Guest OS)共享的Windows文件夹。
将创建的文件夹设置为自动挂载。
示例:在桌面上创建一个名为Ubuntushare的文件夹,并将其添加到这个文件夹中。
第四步
完成共享文件夹规格后,我们从Ubuntu(Guest OS)中挂载文件夹。
创建一个挂载点,在Ubuntu中这是一个与Windows共享文件夹共享文件的目录。
运行以下命令在Ubuntu中创建一个目录。
$ sudo mkdir ~/Desktop/windowsshare
第五步
创建了挂载点后,您现在可以挂载共享文件夹。
运行以下命令来共享文件夹:
$ sudo mount -t vboxsf Ubuntushare ~/Desktop/windowsshare
Ubuntushare是我们在VirtualBox设备部分添加的文件夹名称,该文件夹位于Windows(主机操作系统)中。
~/Desktop/windowsshare是Ubuntu(客户操作系统)中的目录。
恭喜!
现在您可以在Windows和Ubuntu之间共享文件。尝试在Windows(主机操作系统)的Ubuntu共享文件夹中添加任何文件,然后检查Ubuntu(客户操作系统)的windowsshare目录,文件将会反映出来。
我的文章
{{link1:Windows和Ubuntu之间的共享文件夹}}
linux-headers
,build-essential
,gcc
,make
...sf_<folder_name>
root
用户登录,否则无法访问它sudo usermod -a -G vboxsf <username>
sudo chown -R <username>:users /media/sf_<folder_name>
<username>
是您的用户名,<folder_name>
是共享文件夹的名称vboxsf
组创建一个目录,用于挂载这个文件夹,比如 mkdir docs
将Guest Additions安装到Ubuntu虚拟机中。
关闭Ubuntu虚拟机,然后进行配置。
在存储中设置共享文件夹,并记下你在第二个字段中设置的名称。例如,“crazy”。勾选“自动挂载”选项。
启动Ubuntu虚拟机。
就像你说的那样,它实际上是无法访问的。(这是你问题的关键部分。)相反,你会发现它存在于/media/sf_crazy
,其中'crazy'是你给它的名称。而且,它也会存在于你的主目录下的~/crazy
。
现在你需要再进行一步来实际挂载它:
sudo mount -o uid=1000,gid=1000 -t vboxsf ~/crazy ~/docs
其中xxxxxx是您的用户帐户名称。注销并重新登录到Ubuntu。