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