38

私はvagrantchefを使用して、仮想マシンで自分のブログを開発しています。WordPressフォルダーに簡単にアクセスできるように、共有フォルダーを作成しました。

基本的に、wordpressフォルダーは私のホスト上にあり、VMの/ var / www/wordpressに共有フォルダーとしてマウントされます。構成は次のようになります。

config.vm.share_folder "foo", "/guest/path", "/host/path"

私の問題はvagrant:vagrant、ホスト上でVMを変更しても、VMの所有権が常に存在することです。VMの所有権の変更は無視されます。

chownアップロードディレクトリの所有権をに設定するために使用することはできませんwww-data:www-data

chmodアクセス制限を使用してに変更することは可能です777が、これは本当に醜いハックです。

これが私が実際に欲しいものです。これは可能ですか?:

  • 開発:ホストから共有フォルダーへのアクセス。
  • アクセス制限:VMでは、すべてのファイルとフォルダーに適切で安全な所有権とアクセス制限が必要です。
4

5 に答える 5

39

@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"
于 2012-11-26T16:39:01.067 に答える
15

@ 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

于 2013-10-31T12:16:40.190 に答える
8

ゲスト内の所有権の変更を許可できます。

config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
于 2012-11-26T15:55:06.903 に答える
2

@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 
于 2013-03-05T17:23:07.503 に答える
2

他の回答が指摘しているように、おそらくownergroup構成オプションを使用して正しい所有者とグループを設定する必要があります。

ただし、それが機能しない場合もあります(たとえば、ターゲットユーザーがプロビジョニング中に後でのみ作成される場合)。このような場合、共有を再マウントできます。

sudo mount -t vboxsf -o uid=`id -u www-data`,gid=`id -g www-data` /path/to/share /path/to/share
于 2019-01-23T16:46:16.730 に答える