Windowsホストからゲストまで、Vagrantに同期フォルダーを設定しました。最初はファイルへのアクセス許可が大きすぎたため、次のマウントオプションを追加しました。
config.vm.synced_folder "../my-folder", "/home/vagrant/my-folder",
mount_options: ["dmode=775,fmode=664"]
ただし、このフォルダー内の1つのファイルに実行権限を追加する必要があります。 chmod +x file
は効果がありません。共有フォルダー内の単一のアイテムを実行可能にしたり、フォルダー内の残りのアイテムに対して異なる権限を付与したりする方法はありますか?
結局、私は2つの解決策を思いつきました:
1)実行可能なすべてのファイルを受け入れる
config.vm.synced_folder "../my-folder", "/home/vagrant/my-folder",
mount_options: ["dmode=775,fmode=777"]
2)rsyncメソッドを使用してフォルダーを同期します
config.vm.synced_folder "../ansible-provision", "/home/vagrant/ansible", type: "rsync",
rsync__exclude: ".git/"
それぞれの方法には独自の欠点がありますが、最初の方法は実装が最も速く、私のユースケースで許容できるため、それを採用しました。
フォルダーのアクセス許可に関する同様の問題がありました。 Mac OSXでvirtualboxを使用しています。サーバーのキャッシュディレクトリに書き込めないという問題を修正する所有者とグループのオプションを追加しました。フォルダーとファイルのモードを含めるように更新します。
srv.vm.synced_folder server["synced_folder"]["src"], server["synced_folder"]["dest"], create: true, group:'vagrant', owner:'www-data', mount_options: ["dmode=775,fmode=664"]