创建符号链接:协议错误

Tro*_*ike 29 linux windows symlink file-permissions virtual-machine

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

ln -s path/folder/example myFolder
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ln: creating symbolic link `myFolder': Protocol error
Run Code Online (Sandbox Code Playgroud)

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

小智 25

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

  • 实际上,创建符号链接时的协议错误对于在Windows上运行的虚拟框是常见的.以管理员身份运行shell通常可以解决问题. (9认同)

小智 21

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

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

如果您的用户属于管理员类型(而不是标准帐户),则无法在没有UAC提示的情况下运行符号链接的VB.

如果您有标准用户帐户(或者如果您愿意将帐户切换为标准并创建单独的管理员帐户),则存在解决方案.但是,您需要管理员权限才能完成几个步骤(不一定是您的用户帐户).

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

    whoami /priv
    
    Run Code Online (Sandbox Code Playgroud)

    如果您看到启用了SeCreateSymbolicLinkPrivilege权限,那么您已经做得很好.

  3. 确保您的用户可以正确访问主机系统上的共享文件夹.

  4. 如前所述,执行

    VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
    
    Run Code Online (Sandbox Code Playgroud)

    在C:\ Program Files\VirtualBox文件夹的控制台中.不要忘记将VM_NAME的名称替换为VM,并将SHARE_NAME替换为共享文件夹的名称(因为它显示在VM设置中).

  5. 你完成了.

如果您碰巧拥有一个"较小"版本的Windows(例如7 Home),则您没有"secpol.msc"实用程序.请参阅 如何在Windows Vista Home Edition上授予SeCreateSymbolicLink以 获取帮助.

  • 它有效,谢谢!不过,请注意:如果 whoami /priv 将您的权限列为“已禁用” - 不用担心,它只是意味着其他内容(https://social.technet.microsoft.com/Forums/ie/en-US/e24a35b3-fb72 -4918-8e51-562e2ad8d8f5/whoami-priv 返回的状态列是什么?forum=winserversecurity) 。如果列出,则它适用于您的用户。 (2认同)

Pau*_*xon 20

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

  • 对此的错误解决方案是使用mklink在Windows 7中创建符号链接.示例:mklink/D myFolder路径/文件夹/示例 (6认同)
  • 无论您用于启动 VM、VBox 或 vagrant 的任何应用程序,或者……您必须_以管理员身份运行该应用程序_ (3认同)