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.

Oto, czego naprawdę chcę. Czy to możliwe?:
  • 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.
Author: ayckoster, 2012-11-26

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"
 35
Author: ayckoster,
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

 11
Author: Sean Burlington,
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'}
 7
Author: StephenKing,
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 
 1
Author: Barry,
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