Невозможно изменить права доступа к папкам в домашней папке 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']