How to compile Rsync with acl support on Cygwin

Peter Olivia polivia at
Thu Mar 16 16:21:49 GMT 2006



For sometime now, I have wanted to be able to rsync ACLs of files on windows
machines to a Linux server.  I never saw anyone post anything about how to
make it work.  I tried, but I was never able to compile on Cygwin when I
patched the source with the acls.diff patch.  ./configure would error out
after displaying: 


Checking whether to support ACLS... checking for acl_get_file in -lacl...

checking for ACL support... no


This issue was referenced in this post, but I never saw a follow up or




Well I did some poking around the acls.diff patch and started examining the
way cygwin implements ACLs to see what could be patched to make it work.  I
found that cygwin ACLs are implemented using the Solaris implementation:


Corinna Vinschen also mentioned that the cygwin ACLs were modeled using
Solaris ACLs and to reference the sun documentation site for implementation


Seeing that the acls.diff patch already had all the code for doing Solaris
ACLs, it struck me that maybe it might work for Cygwin.  I edited the
acls.diff patch and it compiled (albeit with a few warnings).  I have since
tested it using the 2.6.6 and 2.6.7 code successfully.  I was able to rsync
acls intact to and from my Linux server.


Here is the only edit needed for acls.diff to work on Cygwin


Edit the following line 

+               *solaris*)

+                       AC_MSG_RESULT(Using solaris ACLs)

+                       AC_DEFINE(HAVE_SOLARIS_ACLS, 1, [true if you have
solaris ACLs])


to read :

+               *solaris*|*cygwin*)

+                       AC_MSG_RESULT(Using solaris ACLs)

+                       AC_DEFINE(HAVE_SOLARIS_ACLS, 1, [true if you have
solaris ACLs])


Open Issue


1) The only issue I've seen so far with rsync is that setuid, setgid and
sticky bits don't get restored when restoring to windows with --acls .  If
you restore once with -acls and once more without, it restores both acls and
setuid/setgid/sticky bits. 

2) I also had to use the old way (autoconf and autoheader) with 2.6.7 as the
./prepare-source did not regenerate the configure file


Thought someone might want to test it out and merge the change into CVS. 



-------------- next part --------------
HTML attachment scrubbed and removed

More information about the rsync mailing list