Могу ли я изменить право собственности на общую папку в бродяге?
Я использую бродягу и шеф-повара для разработки своего собственного блога на виртуальной машине. Чтобы иметь легкий доступ к папке wordpress, я создал общую папку.
В основном папка wordpress находится на моем хосте и устанавливается как общая папка в /var/www/wordpress в виртуальной машине. Конфигурация похожа на:
config.vm.share_folder "foo", "/guest/path", "/host/path"
Моя проблема в том, что владение в моей виртуальной машине всегда vagrant:vagrant
, даже если я меняю ее на своем хосте. Изменения в владельце VM игнорируются.
Я не могу использовать chown
, чтобы установить право собственности на каталог загрузки на www-data:www-data
.
Можно использовать chmod
и изменить ограничения доступа на 777
, но это действительно уродливый взлом.
Вот что я на самом деле хочу. Это возможно?:
- Разработка: доступ к общей папке с моего хоста.
- Ограничение доступа: на виртуальной машине все файлы и папки должны иметь правильные и безопасные ограничения доступа и доступа.
Ответы
Ответ 1
Как @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"
Ответ 2
@джон-syrinek
в 1.2+
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
Ответ 3
Вы можете разрешить изменение права собственности внутри гостя:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
Ответ 4
Следуя за @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
Ответ 5
Как указывалось в других ответах, вам, вероятно, следует установить правильного владельца и группу, используя параметры конфигурации owner
и group
.
Однако иногда это не сработает (например, когда целевой пользователь создается позже во время предоставления). В этих случаях вы можете перемонтировать долю:
sudo mount -t vboxsf -o uid='id -u www-data',gid='id -g www-data' /path/to/share /path/to/share