Virtual machine 流浪汉可以';无法访问共享目录

Virtual machine 流浪汉可以';无法访问共享目录,virtual-machine,vagrant,Virtual Machine,Vagrant,我在我的主机上设置了一个带有项目结构的vagrant vm,如下所示: PlayApps --> App1 -----------> all application/project files App2 -----------> "" App3 -----------> "" (etc..) .VagrantFiles --> VagrantFile

我在我的主机上设置了一个带有项目结构的vagrant vm,如下所示:

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