@Gregpopov
Full stack web developer

Как на виртуалке под Vagrant выставить права для записи в каталог?

Привет. Есть сайт, Yii2 framework, поднят на vagrant + puphpet.

Проблема в том, что в assets и runtime не идет запись.

В самом Vagrantfile прописано:
Vagrant.configure('2') do |config|
  eval File.read("#{dir}/puphpet/vagrant/Vagrantfile-#{data['target']}")
  config.vm.synced_folder "./workspace", "/var/www", id: "vagrant-root", 
  :owner => "vagrant", 
  :group=>"www-data", 
  :mount_options=>["dmode=777,fmode=777"]
end


Ни через FileZilla ни через консоль права не меняет, в чем проблема?
  • Вопрос задан
  • 663 просмотра
Пригласить эксперта
Ответы на вопрос 1
werevolff
@werevolff
Я использую для provision ansible скрипт. Но можно использовать и bash. Суть вопроса: пользователь vagrant имеет возможность исполнять sudo команды без пароля. Vagrant даёт возможность запустить bash код или Ansible playbook. Вывод: создаём bash файл, в котором прописываем команды chown и chmod на требуемые директории. Profit!!!

config.vm.provision, type: "shell", run: "always" do |s|
  s.path = "pdrovision.sh"
  s.privileged = false
  s.keep_color = true
end


И в provision.sh:

sudo chmod 777 /vagrant/workspace

За работоспособность vagrantfile с идентичным кодом не ручаюсь, поскольку тут у каждого свой подход. Я использую .define с объявлением имени виртуальной машины, у автора подход из примера не понятен. Но суть в том, чтобы запустить provision выполнением bash скрипта.

Другой вопрос в том, что операционная система не позволяет сменить права. Но если это mac, то в ней самой должны быть команды chmod и chown. Я так понимаю, что проекты лежат в папке /some/path/to/Projects. Пользователь системы, скажем, Vanya. Отсюда, должна работать команда chown -R Vanya /some/path/to/Projects (в Маке).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы