我的主机上有一个带有项目结构的vagrant vm设置,如下所示:
PlayApps --> App1 -----------> all application/project files
App2 -----------> ""
App3 -----------> ""
(etc..)
.VagrantFiles --> VagrantFile
bootstrap.sh
(etc...)
我cd
进入我的.VagrantFiles目录,然后启动VM。在我的VagrantFile中,我正在共享这个目录:
config.vm.synced_folder "../", "/Shared"
目标是与VM共享PlayApps目录中的所有内容(多个项目)。当我启动VM并ssh
时,我看到目录/ Shared,我可以cd
进入它,但是当我尝试用ls -al
列出内容时,我收到以下错误:
ls: cannot open directory .: Operation not permitted.
当我在包含/ Shared的目录上ls -al
时,这就是我所看到的(以及其他目录中):
d????????? ? ? ? ? ? Shared/ and
d????????? ? ? ? ? ? vagrant/
我尝试sudo chmod 666
/ Shared目录,认为这是权限错误,但出现以下错误:
chmod: cannot access '/Shared': Protocol error
Vagrant,ssh和“ops”对我来说是相当新的,所以任何指针,建议和答案都会非常感激。
答案 0 :(得分:41)
您的流浪者盒子被暂停时是否已移动/重命名了任何父目录?
如果有,请运行vagrant halt
,撤消所有重命名,然后vagrant up
,你的项目目录应该回来了!
重命名我的Vagrantfile +项目文件所在的父目录后,我遇到了完全相同的问题。
执行其他方案,确认在VM挂起时重命名流浪者项目的父目录会导致此权限问题;但是,如果您使用vagrant halt
完全关闭虚拟机,您可以自由重命名。
昨天在Ubuntu exact32上有一个功能完善的RoR环境。退出shell,运行vagrant suspend
并关闭我的工作站。
今天我启动了我的工作站(主机)并重命名了我的vagrant项目的父目录,如下所示:
└── ORIGINAL_DIR_NAME
├── Vagrantfile
└── PROJECT
└── NEW_DIR_NAME
├── Vagrantfile
└── PROJECT
之后,我运行了vagrant up
,vagrant ssh
。一旦进入VM shell,我就无法进入/ vagrant。
ls -alh /
返回:
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
。不幸的是,它破坏了整个流浪汉的VM并且它被困在流浪的暴君中 - 不会完全启动或关闭。
所以,正确修复是退出所有流浪汉ssh shell,运行vagrant halt
(不暂停)以确保它 OFF (不是睡着了),并将任何最近的重命名还原为父目录。然后vagrant up
,看看你是否可以进入/vagrant
!之后,如果您只想重命名文件夹vagrant halt
,请重命名,vagrant up
。
答案 1 :(得分:3)
按照@ musophob的详细解答,我意识到如果您只是想将VagrantFile移动到另一个项目文件夹,则必须重新加载VM,以修复/vagrant
访问权限。
由于我最终经常这样做,我使用快捷方式vagrant reload
command - 这只是vagrant halt
后跟vagrant up
并且VM准备就绪。
答案 2 :(得分:1)
我现在已经多次遇到同样的问题 - 虽然不是在重命名父目录或移动Vagrantfile时,而是在主机上创建或重命名文件时 。由于这种情况很少发生,原因不明,我无法故意重现这一点。
尽管如此,一个简单的vagrant reload
修复了问题。