如何使客户操作系统遵循共享文件夹中的符号链接

我将Ubuntu桌面版作为我的主操作系统,而在VirtualBox 4.2.16中,我使用Ubuntu服务器作为我的客户操作系统。
我创建了一个名为/shared的共享文件夹,并在其中放置了指向主操作系统不同文件夹的符号链接。当然,我的客户操作系统只能看到损坏的符号链接,因为这些位置只存在于主操作系统中。
我该如何让我的客户操作系统看到它们的实际内容呢?
创建另一个共享文件夹不是一个选项。

1如果您的主机是Windows 7、8或10,那么您需要按照答案中的说明进行操作,并且还需要以管理员身份运行虚拟机(也就是使用sudo start命令)。关于在Windows主机上使用Linux客户端虚拟机共享文件夹和符号链接的问题,请参考这篇博文:http://www.ahtik.com/blog/fixing-your-virtualbox-shared-folder-symlink-error/。 - Trevor Boyd Smith
2个回答

这是VirtualBox中的一个问题,与安全有关。在4.1.8之前,符号链接是可以工作的,但存在严重缺陷。因此决定移除对符号链接的支持。
请参考此评论
出于安全原因,在VirtualBox 4.1.8中禁用了来自虚拟机内部的符号链接创建。虚拟机可能会创建指向分配给主机目录之外的符号链接。这与任何ext3/ext4的错误无关。虚拟机仍然能够读取在主机上创建的符号链接。
对于延迟的声明表示抱歉。
如果您需要进行操作,请
 VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

然后您的访客将能够再次创建符号链接。但出于安全原因(请参见上文),默认情况下禁用此功能。为了防止来宾创建危险的符号链接,修复工作非常复杂,因此我们决定不允许任何访客创建任何符号链接以解决安全问题。
(我冒昧地修复了注释中的一个错误 ;) )
另外,请注意您需要重新启动vBox以激活更改。

我执行了这个命令并重新启动了VB。符号链接的颜色已经改变,但现在我甚至不能进入它。当我使用ls命令时,我可以看到它,但是bash在TAB上停止显示它给我看。 - dev9
嗯,听起来好像不能执行? - Rinzwind
好的,ls 命令显示 lrwxrwx---,所以应该没问题。但是当我尝试进入它时,Bash 告诉我没有这样的文件或目录。 - dev9
4SHARE_NAME是什么?没有人清楚地解释它从哪里获取。 - Meglio
3您用于共享的文件夹。 - Rinzwind
如何将此选项设为默认? - Fangxing
你需要在回答中使用指令。没有办法进行设置。 - Rinzwind
1我运行了命令,关闭了所有的VirtualBox窗口,重新启动了虚拟机,但是它还是不工作。共享文件夹中的符号链接仍然无法正常工作。 - Gabriel Staples

短答案是无法做到。
virtualbox.org上的以下ticket提供了一些澄清:
这个改变是有意的,它修复了当前共享文件夹实现中的一个问题。为了与不知道符号链接是什么的客户操作系统兼容,目前在主机端进行解释,这意味着对于知道符号链接是什么的客户操作系统(例如,如果在挂载在/foo的共享文件夹上的符号链接指向/bar/file,那么在主机端无法正确处理)。当然可以修复,但是将符号链接处理分离到客户操作系统和主机端之间需要重新设计,这并不容易。所以唯一的选择就是禁用符号链接的创建。太多的用户/应用程序被非标准行为所困扰。 来源