我在我的虚拟盒子上创建了linux(Centos)。当我ssh到它并尝试创建符号链接(在我的共享文件夹上具有完全访问权限):
ln -s path/folder/example myFolder
我收到错误:
ln: creating symbolic link `myFolder': Protocol error
这有什么理由或解决方案吗?
答案 0 :(得分:25)
右键单击命令提示符并“以管理员身份运行”(或者您正在使用的任何程序,以使这些符号链接需要作为管理员运行)。
答案 1 :(得分:19)
这是主机文件系统的问题。检查主机文件夹上的权限是否足够,主机文件系统是否支持符号链接。
答案 2 :(得分:17)
以下是virtualbox.org上的故障单中的解决方案: https://www.virtualbox.org/ticket/10085#comment:32 (注意:在具有管理权限的控制台中执行“whoami / priv”)
我已经对这个bug做了一些Windows研究。
如果您的用户属于管理员类型(而不是标准版) 帐户),没有办法运行VB与符号链接工作没有 UAC提示。
如果您有标准用户帐户(或者您愿意切换) 您的帐户为标准并创建单独的管理员帐户), 解存在。但是,您需要具有管理员权限 完成几个步骤(对您的用户来说并非如此) 帐户)。
- 运行本地安全策略(Win + R,键入“secpol.msc”,确认UAC)。然后导航到“本地政策 - >用户权利分配”。
找到名为“创建符号链接”的权限,然后双击它。将您的用户添加到具有此对象的对象列表中 允许。或者您可以添加“用户”组。注销然后登录。您 可以通过在控制台中运行来检查成功:
whoami /priv
如果您看到启用了SeCreateSymbolicLinkPrivilege权限,那么您就是 做得很好。
确保您的用户有权访问主机系统上的共享文件夹。
如前所述,执行
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
在C:\ Program Files \ VirtualBox文件夹的控制台中。别忘了 用您的VM和SHARE_NAME的名称替换VM_NAME 共享文件夹的名称(显示在VM设置中)。
- 醇>
你已经完成了。
如果您碰巧拥有一个“较小”版本的Windows(例如7 Home),你没有“secpol.msc”实用程序。看到 How do I grant SeCreateSymbolicLink on Windows Vista Home edition 寻求帮助。
答案 3 :(得分:3)
据我了解,Windows VirtualBox主机不支持链接(来自https://www.virtualbox.org/manual/ch04.html#sharedfolders)
从4.0版开始,VirtualBox共享文件夹也支持 符号链接(符号链接),在以下条件下:
主机操作系统必须支持符号链接(即Mac,Linux或 需要Solaris主机。)
目前只有Linux和Solaris Guest Additions支持符号链接。
出于安全原因,不允许来宾操作系统创建符号链接 默认。如果您信任来宾操作系统不滥用该功能,那么您 可以使用以下命令为“sharename”创建符号链接:
VBoxManage setextradata“VM名称” VBoxInternal2 / SharedFoldersEnableSymlinksCreate / sharename 1
答案 4 :(得分:0)
默认情况下,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
答案 5 :(得分:0)
基本上,您需要再次告诉VirtualBox启用符号链接。这是完整的解决方案
将此文件保存在您的流浪文件中,
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/Folder_Name", "1"]
end
我建议注释掉所有同步文件夹,并让默认的./(在主机上)在/ vagrant(在来宾上)同步。这将确保您的共享文件夹(Folder_Name)的名称始终是 vagrant ,如此处https://www.vagrantup.com/docs/synced-folders/所述。另外,您将不会遇到ssh
的问题如果symlink协议错误在重新启动后返回或仍然持续运行
VBoxManage setextradata "VM_Name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/Folder_Name 1
vagrant halt
vagrant up
vagrant ssh
通常,VBoxManagee位于C:\ Program Files \ Oracle \ VirtualBox \
转到/ vagrant并运行,以验证symlink的工作
touch test.txt && ln -s test.txt test1.txt
PS:我曾在Windows Home上尝试过此操作,但对安全设置的访问权限有限
答案 6 :(得分:-1)
找到cmd.exe文件。 右键单击cmd.exe。 选择“以管理员身份运行”菜单选项。 它应该完美无缺。