55

vagrant vm に ssh 接続すると、vagrant ユーザー フォルダーの上下にあるファイルとフォルダーのアクセス許可、および vagrant ユーザー フォルダー内のファイルのアクセス許可を変更できます。ただし、vagrant ユーザー フォルダーの下のフォルダーのアクセス許可を変更することはできません。vagrant ユーザーおよび root としてログインしているかどうかにかかわらず、同じ問題があります。

vagrant ユーザーのフォルダーでアクセス許可を変更する際に何らかの制限はありますか? vagrant ユーザー フォルダーはホスト OS と共有されませんが、capistrano デプロイ フォルダーと docRoot は共有されます。

ゲストは CentOS 6、ホストは OS X 10.7 です。Vagrant は 1.0.5 です。Virtualbox は 4.2.1 です。

4

7 に答える 7

91

共有フォルダーの形式は、Vagrant のバージョンによって異なります。Fabio の回答を参照してください https://serverfault.com/questions/398414/vagrant-set-default-share-permissions

Vagrant バージョン 1.3.1 以前

config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :extra => 'dmode=775,fmode=775'

Vagrant バージョン 1.3.1、1.3.2

Vagrant 1.3.1 以降では、オプションは配列を期待するものextraに置き換えられました。mount_options

config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']

Vagrant バージョン >=1.3.3

vagrant 1.3.3 ではconfig.vm.share_folder、 に置き換えられたようconfig.vm.synced_folderです。

config.vm.synced_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']

于 2013-09-26T09:49:43.500 に答える
17

私の問題はあなたの問題に関連している可能性があります。

ゲストとして vagrant に centos vm があり、ホストとして win7 があります。

ホストと共有されているフォルダーの VM のアクセス許可を実際に変更することはできません。

何か有用なものを見つけたら報告します。こちらの Google グループでディスカッションしてください:

https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI

更新 1:共有フォルダーにシンボリックリンクを作成できないことも読みました。

更新 2: 仮想ボックスが作成された後、そのアクセス許可を変更できないようです。ただし、VagrantFile では、共有フォルダーのアクセス許可をスイートに設定できます: IE

config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'

ここで、所有者、グループ、および適切な権限を設定しました。

これが役立つことを願っています。

于 2012-11-12T16:33:26.957 に答える
9

Vagrant 1.2.7 では、バージョン 2 の Vagrantfiles が使用されるため、構文は以前の回答とは少し異なります。その下にあるのは、CentOS 6.2 でのトリックです。私の状況では、ソースとして相対パスを使用するのが最適です。共有フォルダーを指します。

config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', extra: 'dmode=775,fmode=775'

Jamie が述べたように、作成前に構成する必要があるためvagrant reload、オーバーライドする Vagrantfile を編集した後に使用します。

于 2013-08-22T21:09:47.507 に答える
6

VirtualBox では、同期されたフォルダーの所有者/権限を変更することはできません。

Vagrantファイルで変更できます(他の回答者による)。
グループの代わりに所有者を変更することを検討してください。
また、サーバーがファイルに書き込みできるようにする場合、サーバーは httpd ではなく www-data と呼ばれる可能性が高いことも考慮してください。ps aux | grep nginx[または apache / lighthttpd] を使用して確認します。

他にもいくつかのオプションがあります:

  • 同期フォルダーではなく、共有ファイルにアクセスしているプログラムの所有者を変更します。
    たとえば、PHP がファイルに書き込む必要がある場合は、サーバーと PHP を vagrant として実行するように変更します。[Apache では、httpd.conf で行われます。NGINX のユーザーは nginx.conf に設定され、php-fpm のユーザーはphp-fpm.confまたはそれに含まれるファイルの 1 つに設定されます。
    Apache ロックファイル (/var/lock/apache2) または PHP Websocket ファイル (/var/run/php5-fpm.sock)] と Web サーバーのアクセス許可を変更する必要があります。
  • VirtualBox の代わりに別の VM (HyperV、VMware) を使用します。他の VM にはこの制限がないようです。
  • デフォルトの同期を使用する代わりに、RSyn を使用してファイルを同期します。
    config.vm.synced_folder "/var/www/", type: "rsync"
  • すべてのパーミッションを 777 に設定します。通常、これは悲惨なことであり、提案すらありません。それはまだ悪い考えですが、VM 上ではおそらく実行可能です。ただし、共有アクセス権を付与する前によく考えてください。
    config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]

これらの回答は、Ryan SechresetJeremy Kendallによってよりよく説明されています。

于 2014-09-14T08:55:48.203 に答える
4

ゲストではなくホストからパーミッションを変更します。VirtualBox では、ゲスト OS から共有ファイルのアクセス許可を変更することはできません。

TLDR; 問題は、ゲストのユーザーがホスト ファイルにアクセスする権限を持っていないことではありません。問題は、ホストで仮想ボックス プロセスを実行しているユーザーに、ホストにファイルを書き込む権限がないことです。権限には 2 つのセットがあります。ゲストのアクセス許可は、他の OS と同じように設定する必要があります。また、ゲスト OS が実行されている仮想ボックス プロセスにそのフォルダーへのアクセス許可があることを確認する必要があります。そのプロセスが読み取りアクセス権しか持っていない場合、ゲスト ユーザーが実行できるのは読み取りだけです。

于 2013-09-14T00:24:36.273 に答える
2

まだコメントすることはできませんが、Vagrant 1.7.2 に対する MDeSilva の回答を拡張するには:

一部の人には明らかかもしれませんが、グループと所有者は引用符で囲む必要があります。

group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']
于 2015-04-28T13:10:16.363 に答える
0

Vagrant 1.7.2 の場合、Vagrant ファイルを次のように編集します。

group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']
于 2015-03-24T10:04:15.230 に答える