我在虚拟机 VirtualBox 上创建了 Linux(CentOS)操作系统。当我通过 SSH 登录到该系统后,我尝试在具有完全访问权限的共享文件夹中创建符号链接时:
ln -s path/folder/example myFolder
我遇到错误:
ln: creating symbolic link `myFolder': Protocol error
有没有任何原因或解决方案可以解决这个问题?
我在虚拟机 VirtualBox 上创建了 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)。然后导航到“本地策略->用户权限分配”。
找到名为“创建符号链接”的权限并双击它。将您的用户添加到具有此权限的对象列表中。或者您可以添加“Users”组。注销并重新登录。您可以通过在控制台中运行以下命令来检查是否成功:
whoami /priv
如果您看到启用了 SeCreateSymbolicLinkPrivilege 特权,则说明做得很好。
确保您的用户可以访问主机系统上的共享文件夹。
如早先在此处提到的,执行
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
在C:\Program Files\VirtualBox文件夹中的控制台。不要忘记用你的VM名称替换VM_NAME和共享文件夹的名称替换SHARE_NAME(正如它出现在VM设置中的那样)。
完成了。
如果您拥有Windows的“较低版本”之一(例如7 Home),则没有“secpol.msc”实用程序。请参见如何在Windows Vista家庭版上授予SeCreateSymbolicLink权限寻求帮助。
这是一个与主机文件系统有关的问题。请检查主机文件夹的权限是否足够,并且主机文件系统是否支持符号链接。
Protocol error
消息来自哪个 API/层? - n611x007我通过更改Windows中的本地安全策略来解决了这个问题。搜索本地安全策略并打开它,然后在左侧选择本地策略 -> 用户权限分配 -> 创建符号链接
应该可以解决问题。
默认情况下,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
我在虚拟机Virtual box中(运行在Windows 10上的Lubuntu)遇到了相同的错误。通过使用“以管理员身份运行”选项来运行“Oracle VM Virtualbox”,问题得到解决。
基本上,您需要再次告诉VirtualBox启用符号链接。以下是完整的解决方案
在您的vagrant文件中添加以下内容:
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问题
如果符号链接协议错误在重启后返回或仍然存在,请运行
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
附注:我已经在Windows Home上尝试过,该系统对安全设置的可访问性有限。
找到cmd.exe文件。 右键单击cmd.exe。 选择“以管理员身份运行”菜单选项。 它应该可以完美地工作。
cmd.exe
,而且你如何期望在SSH会话中执行“右键单击”操作? - Toby Speight
root @ 57856515e02b:/ artifacts / test / install / lib#ln-s / usr / share / tcltk / tcl8.5 / artifacts / test / install / lib / ln:无法创建符号链接'/ artifacts / test / install / lib / tcl8.5':协议错误
- user5154816