vagrantとchefを使用して、仮想マシンで自分のブログを開発しています。 wordpressフォルダに簡単にアクセスできるように、共有フォルダを作成しました。
基本的にwordpressフォルダは私のホストにあり、VMの/ var/www/wordpressに共有フォルダとしてマウントされます。構成は次のようになります:
config.vm.share_folder "foo", "/guest/path", "/Host/path"
私の問題は、私のVM=の所有権は、ホスト上でそれを変更しても常にvagrant:vagrant
です。VMの所有権の変更は無視されます。
chown
を使用してアップロードディレクトリの所有権をwww-data:www-data
に設定できません。
chmod
を使用してアクセス制限を777
に変更することは可能ですが、これは本当に醜いハックです。
これが私が実際に欲しいものです。これは可能ですか?:
@StephenKingが示唆するように、ディレクトリ全体のオプションを変更できます。
関連する関数は文書化されていませんが、 ソース は次のように伝えています。
# File 'lib/vagrant/config/vm.rb', line 53
def share_folder(name, guestpath, hostpath, opts=nil)
@shared_folders[name] = {
:guestpath => guestpath.to_s,
:hostpath => hostpath.to_s,
:create => false,
:owner => nil,
:group => nil,
:nfs => false,
:transient => false,
:extra => nil
}.merge(opts || {})
end
基本的に、フォルダ全体にグループ、所有者、ACLを設定できます。これは、ホストですべてを書き込み可能に設定するよりもはるかに優れています。ネストされたディレクトリの所有権を変更する方法は見つかりませんでした。
ここにクイックフィックスがあります:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/Host/path", :owner => "www-data", :group => "www-data"
@ john-syrinek
1.2+
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
ゲスト内の所有権の変更を許可できます。
config.vm.share_folder "foo", "/guest/path", "/Host/path", {:extra => 'dmode=777,fmode=777'}
@StephenKingと@aycokosterのすばらしいヒントに続き、別のディレクトリを読み取り専用でマウントするための使用例がありました。
追加した
config.vm.share_folder "foo", "/guest/path", "/Host/path", :extra => 'ro'
そして
# discard exit status because chown `id -u vagrant`:`id -g vagrant` /Host/path is okay
vagrant up || true
他の回答で指摘されているように、owner
およびgroup
構成オプションを使用して、正しい所有者とグループを設定する必要があります。
ただし、それが機能しない場合があります(たとえば、ターゲットユーザーがプロビジョニング中に後でのみ作成される場合など)。これらの場合、共有を再マウントできます。
Sudo mount -t vboxsf -o uid=`id -u www-data`,gid=`id -g www-data` /path/to/share /path/to/share