The Samba-Bugzilla – Bug 10705
usermap/groupmap do not escape wildcards passed to the remote
Last modified: 2014-07-10 01:21:17 UTC
I was trying to map all GID/UID to 0:0 with..
rsync --chown 0:0 foo user@remote:/tmp
but it bombs out with..
rsync: No match.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
I am guessing that --chown 0:0 maps internally to --usermap *:0 --groupmap *:0 but they aren't escaped properly.
As a work around I am using..
rsync --usermap \\\*:0 --groupmap \\\*:0 foo user@remote:/tmp
and it works.
(i.e. the *'s are escaped enough the remote invocation doesn't fail).
I imagine this would also work if the remote shell did not error on non-matching globs, however I think the existing behaviour is still broken as if the glob did match the behaviour could be very odd.
I looked through the code and found the --protect-args option which does make --chown work.
I guess it would be difficult to fix unless the wildcard character was changed to something else.
Perhaps the best work around for now would be to mention --protect-args in the --chown/--usermap/--groupmap options in the man page?