web-dev-qa-db-ja.com

VagrantSSHは共有ディレクトリにアクセスできません

ホストマシンに次のようなプロジェクト構造を持つvagrantvmセットアップがあります。

PlayApps --> App1 -----------> all application/project files
             App2 -----------> ""
             App3 -----------> ""
             (etc..)
             .VagrantFiles --> VagrantFile
                               bootstrap.sh
                               (etc...)

.VagrantFilesディレクトリにcdしてから、VMを起動します。そのための私のVagrantFileでVM私はこのディレクトリを共有しています:

config.vm.synced_folder "../", "/Shared"

playAppsディレクトリ(複数のプロジェクト)内のすべてをVMと共有することを目的としています。 VMおよびsshを起動すると/ Sharedディレクトリが表示され、そこにcdできますが、ls -alでコンテンツを一覧表示しようとすると、次のエラーが発生します:

ls: cannot open directory .: Operation not permitted.

/ Sharedを含むディレクトリでls -alを実行すると、これが(他のディレクトリの中で)表示されます。

d?????????  ? ?    ?        ?            ? Shared/ and 
d?????????  ? ?    ?        ?            ? vagrant/

/ SharedディレクトリをSudo chmod 666しようとしましたが、アクセス許可エラーだと思っていましたが、次のエラーが発生しました。

 chmod: cannot access '/Shared': Protocol error

Vagrant、ssh、および "ops"は一般的に私にとってはかなり新しいので、ポインタ、提案、回答をいただければ幸いです。

19
MCP

一時停止中に、vagrantボックスの親ディレクトリを移動/名前変更しましたか?

その場合は、vagrant haltを実行し、名前の変更を元に戻します。次にvagrant upを実行すると、プロジェクトディレクトリが元に戻ります。

Vagrantfile +プロジェクトファイルが存在する親ディレクトリの名前を変更した後、まったく同じ問題が発生しました。

VMが一時停止されている間にvagrantプロジェクトの親ディレクトリの名前を変更すると、このアクセス許可の問題が発生することを確認する追加のシナリオを実行しました; 、VM with vagrant haltを完全にシャットダウンした場合は、自由に名前を変更できます

昨日はUbuntuexact32ボックスで完全に機能するRoR環境がありました。シェルを終了し、vagrant suspendを実行して、ワークステーションをシャットダウンしました。

今日、私はワークステーション(ホストマシン)を起動し、vagrantプロジェクトの親ディレクトリの名前を次のように変更しました。

└── ORIGINAL_DIR_NAME
    ├── Vagrantfile
    └── PROJECT

└── NEW_DIR_NAME
    ├── Vagrantfile
    └── PROJECT

その後、vagrant upvagrant sshを実行しました。 VM Shellに入ると、/ vagrantにcdできませんでした。

ゲストシェルからの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を実行することでした。残念ながら、それはvagrant全体をゴミ箱に捨てましたVMそしてそれはvagrantpergatoryで立ち往生しています-完全に起動またはシャットダウンしません。

したがって、正しい修正は、すべてのvagrant sshシェルを終了し、vagrant halt(サスペンドではない)を実行して[〜#〜] off [〜#〜](スリープ状態ではありません)、最近の名前変更を親ディレクトリに戻します。次に、vagrant upを実行して、/vagrantに入ることができるかどうかを確認します。その後、フォルダの名前をvagrant haltだけにしたい場合は、名前を変更してvagrant upにします。

41
sh78

@musophobの非常に詳細な回答に続いて、VagrantFileを別のプロジェクトフォルダーに移動するだけの場合は、/vagrantアクセスを修正するために、常にVMをリロードする必要があることに気付きました。

私はこれを十分頻繁に行うことになったので、ショートカットを使用します vagrant reloadコマンド -これは単にvagrant haltの後にvagrant upとVMの準備ができました。

4
tutuDajuju

同じ問題を何度か経験しましたが、親ディレクトリの名前を変更したり、Vagrantfileを移動したりするときではなく、ホストでファイルを作成または名前変更するときです。これは不明な理由で非常にまれにしか発生しないため、意図的に再現することはできませんでした。

それにもかかわらず、単純なvagrant reload修正問題。

2
conceptdeluxe