Vagrant vmにsshするときに、vagrantユーザーフォルダーの上下のファイルとフォルダー、およびvagrantユーザーフォルダー内のファイルのアクセス許可を変更できます。ただし、Vagrantユーザーフォルダーの下のフォルダーのアクセス許可は変更できません。 Vagrantユーザーとrootとしてログインしても同じ問題があります。
Vagrantユーザーのフォルダー内のアクセス許可の変更に何らかの制限がありますか? vagrantユーザーフォルダーはホストOSと共有されませんが、capistrano deployフォルダーとdocRootは共有されます。
ゲストはCentOS 6、ホストはOS X 10.7です。 Vagrantは1.0.5です。 Virtualboxは4.2.1です。
共有フォルダーの形式は、Vagrantのバージョンごとに異なります。ファビオの答えを参照してください https://serverfault.com/questions/398414/vagrant-set-default-share-permissions
config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :extra => 'dmode=775,fmode=775'
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では、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']
私の問題はあなたに関連しているかもしれません。
ゲストとしてvagrantにcentos vmがあり、ホストとしてwin7があります。
ホストと共有されているフォルダーのVMのアクセス許可を実際に変更することはできません。
何か有用なものが見つかった場合は報告します。ここでグーグルグループについて議論してください:
https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI
更新1:また、共有フォルダにシンボリックリンクを作成できないことも読んでいます。
UPDATE 2:仮想ボックスの作成後、仮想ボックスの権限を変更できないようです。ただし、VagrantFileでは、共有フォルダーのアクセス許可をスイートに設定できます:I.E.
config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'
ここで、所有者、グループ、および私たちのために働く許可を設定しました。
これがお役に立てば幸いです。
Vagrant 1.2.7では、バージョン2のVagrantfileが使用されるため、構文は以前の回答と若干異なります。その下にあるのがCentOS 6.2のトリックです。私の状況では、ソースとして相対パスを使用するのが最適です。共有フォルダーを指します。
config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'Apache', extra: 'dmode=775,fmode=775'
Jamieが述べたように、まだ設定する必要がありますbefore creationですので、vagrant reload
オーバーライドするVagrantfileを編集した後。
VirtualBoxでは、同期されたフォルダーの所有者/アクセス許可を変更することはできません。
Vagrantファイルで変更することができます(他のユーザーの回答に従って)。
グループではなく所有者の変更を検討してください。
これも考慮してください-サーバーがファイルに書き込みできるようにした場合、サーバーはhttpdではなくwww-dataと呼ばれる可能性があります。つかいます ps aux | grep nginx
[またはApache/lighthttpd]をチェックします。
他にもいくつかのオプションがあります。
config.vm.synced_folder "/var/www/", type: "rsync"
config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]
これらの答えは Ryan Sechreset および Jeremy Kendall でより適切に説明されています。
ゲストではなくホストから権限を変更します。 VirtualBoxは、ゲストOSからの共有ファイルのアクセス許可の変更を許可しません。
TLDR;問題は、ゲストのユーザーがホストファイルにアクセスする権限を持っていないことではありません。問題は、ホスト上の仮想ボックスプロセスの実行ユーザーが、ホストにファイルを書き込む権限を持っていないことです。許可には2つのセットがあります。ゲストのアクセス許可は、他のOSと同様に設定する必要があります。また、ゲストOSが実行されている仮想ボックスプロセスにそのフォルダーへのアクセス許可があることを確認する必要があります。そのプロセスに読み取りアクセス権しかない場合、ゲストユーザーが実行できるほとんどのアクセス権は読み取りです。
まだコメントできませんが、Vagrant 1.7.2に対するMDeSilvaの回答を拡張するために:
一部の人には自明かもしれませんが、グループと所有者は引用符で囲む必要があります。
group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']
Vagrant 1.7.2の場合、Vagrantファイルを次のように編集します。
group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']