Czy mogę zmodyfikować własność folderu udostępnionego w vagrant?
Używam vagranti chef do tworzenia własnego bloga w maszynie wirtualnej. Aby mieć łatwy dostęp do folderu wordpress utworzyłem folder udostępniony.
Zasadniczo folder wordpress jest na moim hoście i jest montowany jako folder udostępniony w /var/www/wordpress w maszynie wirtualnej. Konfiguracja jest podobna do:
config.vm.share_folder "foo", "/guest/path", "/host/path"
Mój problem polega na tym, że własność mojej maszyny Wirtualnej jest zawsze vagrant:vagrant
, nawet jeśli zmienię ją na moim hostingu. Zmiany własnościowe w maszynie wirtualnej są ignorowane.
I nie można użyć chown
, aby ustawić własność katalogu upload na www-data:www-data
.
Możliwe jest użycie chmod
i zmiana ograniczeń dostępu na 777
, ale jest to naprawdę brzydki hack.
- rozwój: dostęp do folderu udostępnionego z mojego hosta.
- ograniczenie dostępu: na maszynie wirtualnej wszystkie pliki i foldery powinny mieć odpowiednie i bezpieczne ograniczenia własności i dostępu.
4 answers
Jak sugeruje @StephenKing, możesz zmienić opcje całego katalogu.
Odpowiednia funkcja nie jest udokumentowana, ale źródło mówi nam:
# 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
Zasadniczo można ustawić group, owner I acl dla całego folderu, co jest o wiele lepsze niż ustawienie wszystkiego na świat zapisywalny na hoście. Nie znalazłem żadnej metody zmiany własności zagnieżdżonego katalogu.
Oto quickfix:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-14 13:02:24
@john-syrinek
In 1.2 +
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
Http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 12:16:40
Możesz zezwolić na zmianę własności wewnątrz gościa:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 15:55:06
Kontynuując @StephenKing i @ aycokoster niesamowite wskazówki, miałem przypadek użycia Do Montażu innego katalogu tylko do odczytu.
Dodałem
config.vm.share_folder "foo", "/guest/path", "/host/path", :extra => 'ro'
I
# discard exit status because chown `id -u vagrant`:`id -g vagrant` /host/path is okay
vagrant up || true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-05 17:23:07