我在我的虚拟盒子上创建了 linux (Centos)。当我 ssh 到它并尝试创建符号链接时(在具有完全访问权限的共享文件夹上):
ln -s path/folder/example myFolder
我得到错误:
ln: creating symbolic link `myFolder': Protocol error
有什么原因或解决方案吗?
我在我的虚拟盒子上创建了 linux (Centos)。当我 ssh 到它并尝试创建符号链接时(在具有完全访问权限的共享文件夹上):
ln -s path/folder/example myFolder
我得到错误:
ln: creating symbolic link `myFolder': Protocol error
有什么原因或解决方案吗?
右键单击您的命令提示符并“以管理员身份运行”(或您用来制作这些符号链接的任何程序都需要以管理员身份运行)。
这是 virtualbox.org 票证中的解决方案: https ://www.virtualbox.org/ticket/10085#comment:32 (注意:在控制台中以管理权限执行“whoami /priv”)
我已经对此错误进行了一些 Windows 研究。
如果您的用户是管理员类型(而不是标准帐户),则无法在没有 UAC 提示的情况下运行带有符号链接的 VB。
如果您有一个标准用户帐户(或者如果您愿意将您的帐户切换到标准并创建一个单独的管理员帐户),则存在解决方案。但是,您需要管理员权限才能完成其中的几个步骤(您的用户帐户不一定如此)。
- 运行本地安全策略(Win+R,键入“secpol.msc”,确认 UAC)。然后导航到“本地策略->用户权限分配”。
找到名为“创建符号链接”的权限并双击它。将您的用户添加到具有此权限的对象列表中。或者您可以添加“用户”组。注销并登录。您可以通过在控制台中运行来检查成功:
whoami /priv
如果您看到权限 SeCreateSymbolicLinkPrivilege 已启用,那么您做得很好。
确保您的用户有权访问主机系统上的共享文件夹。
如前所述,执行
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
在 C:\Program Files\VirtualBox 文件夹的控制台中。不要忘记将 VM_NAME 替换为您的 VM 名称,并将 SHARE_NAME 替换为共享文件夹的名称(如 VM 设置中所示)。
你完成了。
如果您碰巧拥有 Windows 的“较小”版本之一(例如 7 Home),则您没有“secpol.msc”实用程序。请参阅 如何在 Windows Vista 家庭版上授予 SeCreateSymbolicLink 以 获取帮助。
这是主机文件系统的问题。检查主机文件夹的权限是否足够并且主机文件系统支持符号链接。
据我了解,Windows VirtualBox 主机不支持链接(来自https://www.virtualbox.org/manual/ch04.html#sharedfolders)
从 4.0 版本开始,VirtualBox 共享文件夹还支持符号链接(symlinks),在以下条件下:
主机操作系统必须支持符号链接(即需要 Mac、Linux 或 Solaris 主机)。
目前只有 Linux 和 Solaris Guest Additions 支持符号链接。
出于安全原因,默认情况下不允许来宾操作系统创建符号链接。如果您相信来宾操作系统不会滥用该功能,您可以启用为“sharename”创建符号链接:
VBoxManage setextradata "VM name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/sharename 1
找到 cmd.exe 文件。右键单击 cmd.exe 。选择“以管理员身份运行”菜单选项。它应该可以完美运行。
基本上你需要再次告诉 VirtualBox 启用符号链接。这是完整的解决方案
在你的流浪文件中有这个,
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/Folder_Name", "1"]
end
我建议注释掉任何同步文件夹,并让默认的 ./(at host) 在 /vagrant(at guest) 同步。这将确保您的共享文件夹(Folder_Name)名称始终是vagrant,如此处所述https://www.vagrantup.com/docs/synced-folders/。此外,您不会遇到 ssh 的问题
如果重新启动后符号链接协议错误返回或仍然持续运行
VBoxManage setextradata "VM_Name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/Folder_Name 1
vagrant halt
vagrant up
vagrant ssh
通常,VBoxManagee 位于 C:\Program Files\Oracle\VirtualBox\
通过转到 /vagrant 并运行来验证符号链接的工作
touch test.txt && ln -s test.txt test1.txt
PS:我已经在 Windows Home 上尝试过这个,它对安全设置的访问受限
默认情况下,VirtualBox VM 禁用符号链接的创建。
Oracle VM VirtualBox 共享文件夹在以下情况下支持符号链接:
要为共享文件夹创建符号链接,您应该执行以下操作:
$ VBoxManage setextradata "{VM_name}" VBoxInternal2/SharedFoldersEnableSymlinksCreate/{share_folder_name} 1
就我而言,它看起来像:
$ VBoxManage setextradata "ubuntu16" VBoxInternal2/SharedFoldersEnableSymlinksCreate/shared 1
您可以在这里找到更多信息:
https://docs.oracle.com/cd/E97728_01/E97727/html/sharedfolders.html https://www.virtualbox.org/ticket/18572?cversion=0&cnum_hist=2
我在虚拟框中观察到相同的错误(在 Windows 10 中运行的 Lubuntu)。通过使用“以管理员身份运行”选项运行“Oracle VM Virtualbox”解决了问题。