Невозможно изменить права доступа к папкам в домашней папке бродяг

Когда я вхожу в мой vagrant vm, я могу изменить права доступа к файлам и папкам выше и за пределами пользовательской папки бродяг и для файлов внутри пользовательской папки бродяг. Но не может изменять разрешения для папок в папке пользователя бродяг. У меня такая же проблема, как и вход в систему как пользователь бранного и root.

Есть ли какие-то ограничения на изменение разрешений в папке пользователя бродяг? Пользовательская папка-бродяга не используется совместно с ОС хоста, но папка развертывания capistrano и docRoot.

Гость - CentOS 6, хост - OS X 10.7. Vagrant 1.0.5. Virtualbox - 4.2.1.

Ответ 1

Формат общих папок меняется в разных версиях Vagrant. См. Ответ Фабио https://serverfault.com/questions/398414/vagrant-set-default-share-permissions

Бродячая версия 1.3.1 и ранее

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

Бродячая версия 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']

Бродячая версия> = 1.3.3

В config.vm.share_folder 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']

Ответ 2

Моя проблема может быть связана с вашей.

У меня есть centos vm в бродяге, как гость и win7 в качестве хоста.

Я не могу фактически изменять разрешения в виртуальной машине любых папок, которые совместно используются хостом.

отчитается, если я открою что-нибудь полезное. Обсудите здесь группу google:

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

ОБНОВЛЕНИЕ 1: Я также прочитал, что вы не можете создавать символические ссылки в общих папках.

ОБНОВЛЕНИЕ 2: Кажется, что я не могу изменить разрешения в виртуальном поле после его создания. Однако в VagrantFile вы можете установить разрешения для общих папок на то, что содержит: I.E.

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

здесь я установил владельца, группу и разрешения, которые работают для нас.

Надеюсь, это поможет.

Ответ 3

В Vagrant 1.2.7 используется версия 2 Vagrantfiles, поэтому синтаксис немного отличается от предыдущих ответов. Под этим вот что делает трюк для CentOS 6.2. Я считаю, что использование относительного пути в качестве источника лучше всего работает в моей ситуации. Он указывает на общую папку.

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

Как заявляет Джейми, все еще необходимо настроить его перед созданием, поэтому используйте vagrant reload после того, как вы отредактировали свой переопределяющий файл Vagrant.

Ответ 4

VirtualBox не позволяет изменять владельца/разрешения для синхронизированных папок.

Вы можете изменить его в файле Vagrant (как утверждают другие).
Подумайте об изменении владельца вместо группы.
Считайте также, что - если сделано так, чтобы ваш сервер мог писать файлы, ваш сервер скорее всего будет называться www-data вместо httpd. Используйте ps aux | grep nginx [или apache/lighthttpd] для проверки.

Есть и другие варианты:

  • Измените владельца программы, которая обращается к общим файлам, а не к синхронизированной папке.
    Например, если PHP нужно записать в файл, измените сервер и PHP, чтобы работать как бродяга. [В Apache, это сделано в httpd.conf. Пользователь NGINX установлен в nginx.conf, пользователь php-fpm находится в php-fpm.conf или один из файлов, который он включает.
    Вам необходимо изменить разрешения на файл блокировки Apache (/var/lock/apache2) или файл websocket PHP (/var/run/php5-fpm.sock)] и веб-сервер.
  • Используйте виртуальную машину (HyperV, VMware) вместо VirtualBox. Другие 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 Sechreset и Джереми Кендалл.

Ответ 5

Измените разрешения на хост, а не на гость. VirtualBox запрещает изменять разрешения для общих файлов из гостевой ОС.

TL;DR; Проблема заключается не в том, что у пользователей вашего гостя нет разрешений на доступ к вашим файлам хоста. Проблема заключается в том, что исполняющий пользователь процесса virtaul box на вашем хосте не имеет прав на запись файлов в хост. Существует два набора разрешений. Разрешения гостя должны быть установлены так же, как и любые другие os. Вы также должны убедиться, что процесс виртуального бокса, в котором работает ваш гостевой os, имеет разрешения для этой папки. Если этот процесс имеет доступ только для чтения, большинство читателей, которых может выполнить пользователь, читаются.

Ответ 6

Пока не могу комментировать, но продолжу ответ MDeSilva для Vagrant 1.7.2:

Для некоторых это может быть очевидно, но группа и владелец должны быть в кавычках.

group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']

Ответ 7

Для бродяг 1.7.2 Редактируйте файл бродяг, как это,

group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']