在 vagrant box 中与 rsync 同步时如何更改所有者或组?

How to change owner or group when syncing with rsync in vagrant box?

目前,我在 Drupal-VM(Windows 上的 Vagrant + Virtual Box)上安装 Drupal 时遇到权限问题。我正在与 rsync 同步,这导致同步文件和文件夹的所有者和组 vagrant。因为 apache 是 运行 用户 www-data 文件无法写入 public 临时文件夹 sites/default/files 中,该文件夹由 vagrant:vagrant 拥有。这就是我尝试将同步文件组更改为 www-data 的原因。我该如何实现?

我的环境

Vagrant 1.9.1
VirtualBox 5.1.14 r112924

我的OS

微软 Windows [版本 10.0.14393]

总结

我已经在 config.yml 中尝试过以下设置:

vagrant_synced_folders: - local_path: C:\#\myproject destination: /var/www/myproject.dev type: rsync create: true options_override: group: www-data

vagrant_synced_folders: - local_path: C:\#\myproject destination: /var/www/myproject.dev type: rsync create: true group: www-data

这些在vagrant reload后不生效。当我检查 .vagrant/machines/mydrupalvmbox/virtualbox/syncedfolders 时,group 仍然是 vagrant。更改此临时文件中的组并执行 vagrant rsync 会为 rsynced 文件和目录生成正确的组。但是在 vagrant reload 之后,那些临时设置消失了,组 vagrant 又回来了。

我也尝试通过 rsync_args 更改组但没有成功:

vagrant_synced_folders: - local_path: C:\#\myproject destination: /var/www/myproject.dev type: rsync create: true options_override: rsync__args: [ "--verbose", "--archive", "--delete", "--chmod=gu=rwX,o=rX", "--group", # required for the following command "--groupmap=*:www-data" ]

我得到一个错误:Error: rsync: --groupmap=*:www-data: unknown option

那么正确的设置是什么?

你是哪个版本的 rsync 运行?

groupmap 选项已包含在版本 3.1.0 中(参见 https://rsync.samba.org/ftp/rsync/src/rsync-3.1.0-NEWS

- Added the --usermap/--groupmap/--chown options for manipulating file
  ownership during the copy.

升级您的 rsync 版本(如果您使用的是 cygwing,请升级 cygwin/rsync)并确保您获得最新版本

rsync --version

Drupal VM 中你必须在 options_override 中使用 rsync__group:

vagrant_synced_folders:
  - local_path: C:\#\myproject
  // [...]
  options_override:
    rsync__group: www-data

查看相关问题:https://github.com/geerlingguy/drupal-vm/issues/1199

这可能也适用于其他 vagrant boxes。