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

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

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

Гость - CentOS 6, Хост - OS X 10.7. Бродяга 1.0.5. Виртуальная коробка 4.2.1.

7 ответов

Решение

Формат общих папок меняется в разных версиях 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

В бродяге 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']

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

У меня есть Centos VM в Vagrant в качестве гостя и Win7 в качестве хозяина.

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

сообщу, если я найду что-нибудь полезное. Обсудить в группе Google здесь:

https://groups.google.com/forum/?fromgroups=

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

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

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

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

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

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

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

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

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

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

Есть несколько других вариантов:

  • Измените владельца программы, которая обращается к общим файлам вместо синхронизированной папки.
    Например, если PHP нужно записать в файл, измените сервер и PHP, чтобы он работал как vagrant. [В Apache это делается в httpd.conf. Пользователь NGINX установлен в nginx.conf, пользователь php-fpm - в php-fpm.conf или в одном из включенных в него файлов.
    Вам необходимо изменить разрешения для файла блокировки Apache (/var/lock/apache2) или файла веб-сокета PHP (/var/run/php5-fpm.sock)] и веб-сервера.
  • Используйте другую виртуальную машину (HyperV, VMware) вместо VirtualBox. Другие виртуальные машины не имеют этого ограничения.
  • Используйте RSyn для синхронизации файлов вместо использования синхронизации по умолчанию.
    config.vm.synced_folder "/var/www/", type: "rsync"
  • Установите все разрешения на 777. Обычно это будет иметь катастрофические последствия, и даже не предложение. Это все еще плохая идея, но на виртуальной машине это возможно. Подумайте дважды, прежде чем предоставить общий доступ.
    config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]

Эти ответы лучше описаны Райаном Сечрезетом и Джереми Кендаллом.

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

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

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

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

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

Для Vagrant 1.7.2 Отредактируйте файл Vagrant следующим образом:

group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']
Другие вопросы по тегам