Virtualbox共享文件夹权限

674
我正在使用Windows和Virtualbox与RedHat,简单地说:我已经创建了一个共享文件夹,以便在Windows操作系统上使用Eclipse并在Linux中进行一些测试。 然而,我无法使用我的用户访问共享文件夹,我已经使用root登录并使用chmod 777甚至将我的用户移动到文件夹的组中。 无论我做什么,结果都是相同的:/ media / sf_sharedFolder /:Permission denied。 我该怎么办?如何使用我的用户访问共享文件夹?

加一以获取关闭 - ceving
11个回答

1401

将自己添加到虚拟机中的 vboxsf 组。

解决方案1

从终端运行 sudo adduser $USER vboxsf
(在Suse上,它是 sudo usermod --append --groups vboxsf $USER)

为了生效,您应该注销然后重新登录,或者您可能需要重启。

解决方案2

编辑文件 /etc/group(您需要管理员权限)。查找行 vboxsf:x:999 并在末尾添加 :您的用户名 - 如果您没有 sudo,请使用此解决方案。

为了生效,您应该注销然后重新登录,或者您可能需要重启。


142
值得一提的是,注销并重新登录就足以使更改生效。 - 3c71
26
谢谢,对我来说只是缺少了重新启动的部分。 - Pedro Reis
11
只需卸载共享并重新安装即可,无需注销和重新登录。在主机的VirtualBox中,转到“设备”>“共享文件夹”,将鼠标悬停在要共享的文件夹上以查看工具提示信息。例如:sudo mount -t vboxsf VboxSharedFolderName /media/VboxSharedFolderName(此功能需要安装客户机附加组件)。 - firepol
16
我使用Ubuntu 17.04作为虚拟机,Windows 10作为主机操作系统(都是64位),但由于某些原因,直到我重启虚拟机后才能正常工作。我使用了解决方案2。 - Alex
27
与@Alex的结果相同,使用Win7作为主机和Ubuntu 17.04作为客户机,在将用户添加到vboxsf后登入/登出是不足够的,需要完全重新启动虚拟机才能使权限生效。 - Hugh Nolan
显示剩余18条评论

247

虚拟机上尝试这个(即在Virtual box中运行的操作系统):

sudo adduser your-user vboxsf
现在重新启动运行在虚拟机中的操作系统。

11
运行得很好。唯一需要补充的是我不得不重新启动操作系统(没有尝试仅注销,但可能足够)。 - Osmar
3
甚至不需要注销/登录,su - $USER 就足够了。(当然,对于从新 shell 启动的程序而言。) - tzp
2
为了我想要做的事情,需要重新启动。如果你希望它自动化而不是手动挂载,重新启动会更容易些。 - J. Martin
1
在 Fedora 36 上,我不得不执行 sudo usermod -aG <group> <user> 命令,而注销并不能生效,只有重启才行。 - xdavidliu
2
我也不得不在Ubuntu 18上重新启动。注销并重新登录无法解决问题。卸载和重新挂载也无济于事。只有重新启动似乎可以解决问题。 - tom
在CentOS上,我只需要注销并重新登录,然后使用xdavidliu提供的sudo usermod版本。 - tobi delbruck

66

这也可以运作

sudo usermod -aG <group> <user>

然后重新启动虚拟机


2
不需要重新启动虚拟机,只需注销并重新登录即可。 - ivandov
14
由于某种原因,我的系统需要重新启动。 - Tensigh
2
我支持 @Tensigh 的观点。尽管我的用户名已显示在 /etc/group 中,但在键入“groups”命令时却从未出现过。我不得不重新启动虚拟机。 - James Shrum
谢谢,重新启动是让它对我起作用的原因。 - Spencer Stream

65
对于真正懒惰的人(不需要打字,只需轻松复制粘贴):
sudo usermod -aG vboxsf $USER

退出并重新登录以使更改生效。

我知道这是一个“我也是”的解决方案,但我真的很懒,没有找到其他解决方案来满足我的固有懒惰... :)


4
退出登录并不能解决问题,我必须重新启动它。 - CodyChan
6
需要在VirtualBox 6.1中使用Ubuntu 18.04.xLTS以上的版本进行重新启动。 - cmaceachern

14

对于VirtualBox(5.0.24)主机=Mac(El Capitan)和客户=RHEL(7.2)

启动您的RHEL客户VM并打开终端。确保您已安装开发人员工具。

sudo yum groupinstall 'Developer Tools'

同时还需要安装内核头文件包,这样才能让增强功能脚本更新你的内核。

sudo yum install kernel-devel*

一旦您准备好了先决条件,就可以安装客户机附加组件了。在选择正在运行的VM之后,进入VirtualBox菜单,然后选择Devices --> Insert Guest Additions CD image...

输入图片描述

等待几秒钟进行挂载并启动安装脚本。一旦完成,点击弹出的Guest VM对话框中的“运行”按钮。

脚本完成后,在桌面上右键单击CD图标,然后选择“弹出”。然后关闭Guest VM。

使用终端在主机系统中创建共享文件夹,我通常将其放在我的文档文件夹中,并确保您的用户可以访问它。

sudo mkdir ~/Documents/RhelShared
sudo chmod 755 <user> ~/Documents/RhelShared

在Oracle VM Virtual Box Manager中选择您的虚拟机,然后单击“共享文件夹”配置元素。在下一个对话框中,单击文件夹列表右侧的添加文件夹图标。

然后,在弹出窗口中选择您刚创建的主机文件夹作为文件夹路径,并给它一个将由Guest VM使用的文件夹名称,同时选中“自动挂载”复选框。

输入图像描述

在重启Guest VM后,在Host上启动终端,并检查与正在运行的VirtualBox Guest进程相关联的用户是否是您的用户(很可能如此),或者属于具有访问共享文件夹权限的组。

ps aux | grep VirtualBoxVM

然后根据之前几个答案,在虚拟机中的终端上,将您的用户添加到vboxsf组。

sudo usermod -a -G vboxsf <user>

退出并重新登录以应用更改。

如果您在弹出窗口中使用了与我相同的名称,则 sf_rhelshared 共享文件夹现在应该可用且可访问。


6
为了澄清上一篇文章:
VBoxManage命令是:
VBoxManage setextradata <VM_NAME> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<SHARE_NAME> 1

真希望早点看到这个!在另一篇文章中找到了它。该命令允许在虚拟机系统中创建符号链接。谢谢。 - Ignat

5

在我的情况下,需要执行以下操作:

sudo chgrp vboxsf /media/sf_sharedFolder

1
这是我不得不在Ubuntu 20.04的更高评级步骤之外做的事情。 - Scott Lindner

2
sudo adduser xxxxxxx vboxsf

其中 xxxxxx 是您的用户帐户名称。退出并重新登录到 Ubuntu。


1
或者简单地使用“sudo adduser $USER vboxsf”,让用户名自动从系统中读取。 - KaO

2
问题在于共享文件夹的权限默认不允许符号链接。您可以通过以下几个简单步骤启用它们。
  1. 关闭虚拟机。
  2. 在“机器 > 设置 > 通用 > 名称”中记录您的机器名称
  3. 在“机器 > 设置 > 共享文件夹”中记录您的共享文件夹名称
  4. 找到您的VirtualBox根目录并执行以下命令。 VBoxManage setextradata "[vm name]" VBoxInternal2/SharedFoldersEnableSymlinksCreate/[shared folder] 1
  5. 启动虚拟机,现在共享文件夹将允许符号链接。

第三步似乎没有在您的指令中使用,第四步会产生一个错误。 - Toxid

-1

将用户添加到vboxsf组后,您可能需要完全注销gnome/xfce/???会话,因为很久以前有人决定在首次登录窗口系统时缓存组关联。

或者走老路:

% newgrp vboxsf

在任何你想要使用的 shell 中访问该文件夹。幸运的是,newgrp 会自行查找组列表并不使用缓存值。但如果你想从非 shell 的其他地方访问该文件夹,仍需要注销并重新登录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接