владелец подкаталога vagrant synced folder

#vagrant #subdirectory #shared-directory #owner #synced-folder

#vagrant #подкаталог #общий каталог #владелец #синхронизированная папка

Вопрос:

Я использую vagrant с синхронизированной папкой

 development.vm.synced_folder "/usr/local/src/www", "/var/www", owner: "www-data", group: "www-data"
  

Есть ли способ изменить владельца подкаталога /var/www, скажем /var/www/images?

Ответ №1:

Очевидно, что это очень поздний ответ, но такое поведение все еще верно для Vagrant и некоторых типов монтирования. В документах указано это для настройки владельца монтирования

владелец (строка) — пользователь, который должен быть владельцем этой синхронизированной папки. По умолчанию это будет пользователь SSH. Некоторые типы синхронизированных папок не поддерживают изменение владельца

Здесь: https://www.vagrantup.com/docs/synced-folders/basic_usage#owner

Это означает, что во многих случаях нам нужно выполнить некоторый обходной путь, который предоставляет разрешение на запись, но не требует смены владельца. Если это среда разработки, возможно, вы могли бы быть немного YOLO и предоставить разрешения на запись для всех файлов / папок в каталоге

Грязное быстрое исправление, которое абсолютно предназначено только для разработки / тестирования

 sudo chmod -R 1777 /var/www/images
  

Более чистым способом было бы использовать «find» только для изменения каталогов

 find /var/www/images -type d -exec chmod 755 {} ;
  

Опять же, только для разработки / тестирования

Редактировать:

Возможно, проще всего установить разрешения в параметрах монтирования для всего веб-корня.

 config.vm.synced_folder "./", "/var/www/example.com", type: "virtualbox", owner: "vagrant", group: "vagrant", mount_options: ["fmode=776"]
  

Приведенный выше код по-прежнему будет иметь пользователя Vagrant в качестве владельца, но позволит всем пользователям, включая www-data, выполнять запись во всю структуру. Не очень безопасно, но работает.