创建符号链接:协议错误

时间:2013-07-27 07:11:53

标签: linux windows virtual-machine file-permissions symlink

我在我的虚拟盒子上创建了linux(Centos)。当我ssh到它并尝试创建符号链接(在我的共享文件夹上具有完全访问权限):

ln -s path/folder/example myFolder

我收到错误:

ln: creating symbolic link `myFolder': Protocol error

这有什么理由或解决方案吗?

7 个答案:

答案 0 :(得分:25)

右键单击命令提示符并“以管理员身份运行”(或者您正在使用的任何程序,以使这些符号链接需要作为管理员运行)。

答案 1 :(得分:19)

这是主机文件系统的问题。检查主机文件夹上的权限是否足够,主机文件系统是否支持符号链接。

答案 2 :(得分:17)

以下是virtualbox.org上的故障单中的解决方案: https://www.virtualbox.org/ticket/10085#comment:32 (注意:在具有管理权限的控制台中执行“whoami / priv”)

  

我已经对这个bug做了一些Windows研究。

     

如果您的用户属于管理员类型(而不是标准版)   帐户),没有办法运行VB与符号链接工作没有   UAC提示。

     

如果您有标准用户帐户(或者您愿意切换)   您的帐户为标准并创建单独的管理员帐户),   解存在。但是,您需要具有管理员权限   完成几个步骤(对您的用户来说并非如此)   帐户)。

     
      
  1. 运行本地安全策略(Win + R,键入“secpol.msc”,确认UAC)。然后导航到“本地政策 - >用户权利分配”。
  2.   
  3. 找到名为“创建符号链接”的权限,然后双击它。将您的用户添加到具有此对象的对象列表中   允许。或者您可以添加“用户”组。注销然后登录。您   可以通过在控制台中运行来检查成功:

    whoami /priv
    
         

    如果您看到启用了SeCreateSymbolicLinkPrivilege权限,那么您就是   做得很好。

  4.   
  5. 确保您的用户有权访问主机系统上的共享文件夹。

  6.   
  7. 如前所述,执行

    VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
    
         

    在C:\ Program Files \ VirtualBox文件夹的控制台中。别忘了   用您的VM和SHARE_NAME的名称替换VM_NAME   共享文件夹的名称(显示在VM设置中)。

  8.   
  9. 你已经完成了。

  10.         

    如果您碰巧拥有一个“较小”版本的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共享文件夹在以下情况下支持符号链接:

  • 主机操作系统必须支持符号链接。例如,需要Mac OS X,Linux或Oracle Solaris主机。
  • 当前仅Linux和Oracle Solaris Guest Additions支持符号链接。
  • 出于安全原因,默认情况下不允许来宾操作系统创建符号链接。

要为共享文件夹创建符号链接,您应该执行以下操作:

  1. 在主机上运行此命令(其中{VM_name}是VM的名称,{share_folder_name}是共享目录的名称):
$ VBoxManage setextradata "{VM_name}" VBoxInternal2/SharedFoldersEnableSymlinksCreate/{share_folder_name} 1

就我而言,它看起来像:

$ VBoxManage setextradata "ubuntu16" VBoxInternal2/SharedFoldersEnableSymlinksCreate/shared 1
  1. 重新启动VM。

更多信息,请点击此处:

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。 选择“以管理员身份运行”菜单选项。 它应该完美无缺。