Virtual machine 流浪汉可以';无法访问共享目录
我在我的主机上设置了一个带有项目结构的vagrant vm,如下所示:Virtual machine 流浪汉可以';无法访问共享目录,virtual-machine,vagrant,Virtual Machine,Vagrant,我在我的主机上设置了一个带有项目结构的vagrant vm,如下所示: PlayApps --> App1 -----------> all application/project files App2 -----------> "" App3 -----------> "" (etc..) .VagrantFiles --> VagrantFile
PlayApps --> App1 -----------> all application/project files
App2 -----------> ""
App3 -----------> ""
(etc..)
.VagrantFiles --> VagrantFile
bootstrap.sh
(etc...)
我将cd
放入我的.VagrantFiles目录,然后启动虚拟机。在我的虚拟机文件中,我共享此目录:
config.vm.synced_folder "../", "/Shared"
目标是与VM共享PlayApps目录中的所有内容(多个项目)。当我在中启动VM和ssh
时,我看到目录/Shared,我可以cd
进入其中,但是当我尝试使用ls-al
列出内容时,我得到以下错误:
ls: cannot open directory .: Operation not permitted.
chmod: cannot access '/Shared': Protocol error
当我在包含/共享的目录上执行ls-al
时,我看到的是(在其他目录中):
我试图sudo chmod 666
Shared目录,认为这是一个权限错误,但得到了以下错误:
ls: cannot open directory .: Operation not permitted.
chmod: cannot access '/Shared': Protocol error
Vagrant、ssh和“ops”对我来说一般都是比较新的,所以如果有任何提示、建议和答案,我将不胜感激。您是否在Vagrant box挂起时移动/重命名了它的父目录 如果是这样,运行
vagrant-halt
,撤消任何重命名,然后vagrant-up
,您的项目目录应该会回来
在重命名Vagrantfile+项目文件所在的父目录后,我遇到了完全相同的问题
运行其他方案,确认在VM挂起时重命名vagrant项目的父目录会导致此权限问题;但是,如果您使用vagrant halt
完全关闭虚拟机,您可以自由重命名
昨天在Ubuntu precise32盒上有一个功能完善的RoR环境。退出外壳程序,运行Wagrant suspend并关闭我的工作站
今天我启动了我的工作站(主机),并重命名了我的vagrant项目的父目录,如下所示:
└── ORIGINAL_DIR_NAME
├── Vagrantfile
└── PROJECT
└── NEW_DIR_NAME
├── Vagrantfile
└── PROJECT
之后,我运行了vagrant-up
,vagrant-ssh
。一旦进入虚拟机外壳,我就无法将cd放入/vagrant
ls-alh/
从来宾shell返回:
ls: cannot access /vagrant: Protocol error
[...]
drwxrwxrwt 2 root root 4.0K Aug 4 21:17 tmp
drwxr-xr-x 10 root root 4.0K Sep 14 2012 usr
d????????? ? ? ? ? ? vagrant
drwxr-xr-x 11 root root 4.0K Aug 4 19:23 var
[...]
还尝试了/vagrant
上的chmod,得到以下结果:
chmod: cannot access `/vagrant': Protocol error
第一次尝试的修复是运行vagrant suspend
,将父目录重命名回其原始值,然后运行vagrant up
。不幸的是,它毁掉了整个流浪者虚拟机,并被困在流浪者的禁锢中——无法完全启动或关闭
因此,正确的修复方法是退出所有vagrant ssh shell,运行
vagrant halt
(非挂起)以确保其处于关闭状态(未休眠),并将任何最近的重命名还原到父目录。然后vagrant向上
,看看你是否能进入/vagrant
!在那之后,如果你想重命名你的文件夹,vagrant-halt
,rename,和vagrant-up
,遵循@musophob的详细回答,我意识到如果你只是想把你的vagrant文件移到另一个项目文件夹,你必须总是重新加载VM,以修复/vagrant
访问
因为我经常这样做,我使用快捷方式-这只需执行
vagrant-halt
,然后执行vagrant-up
,虚拟机就准备好了。我已经多次遇到相同的问题,虽然不是在重命名父目录或移动vagrant-file时遇到的,而是在主机上创建或重命名文件时遇到的。由于未知原因,这种情况很少发生,所以我无法有意地重现这种情况
然而,一个简单的
流浪者重新加载
解决了这个问题。对我帮助很大。THXI如果您在我的情况下无法恢复以前的配置,只需删除旧的vagrant框并重新启动vagrant destroy&&rm-rf.vagrant&&vagrant up