在 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。
目前,我在 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。