mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-09-16 07:10:39 -04:00
When the receiver cannot pin an entry with a held fd and the kernel has no *xattrat syscalls (pre-6.13 Linux, the BSDs, Solaris, ...), the hardened ACL path previously skipped the apply with a warning and reported success -- it silently left the destination ACL stale, so a changed or revoked source ACL did not propagate yet rsync exited 0. Per project policy, prefer the documented --acls functionality over refusing it on platforms that cannot offer the race-safe primitive (Linux 6.13+ takes the secure xacl_*_at() path, and an operator who needs the guarantee can move there). The get / default-ACL-delete / set fallbacks now fall through to the path-based sys_acl_*file() calls -- the long-standing 3.4.x behaviour -- which restores correct ACL application at the cost of the parent-symlink race that is unavoidable on those platforms. Tests: a new acls-unpinnable test asserts a received ACL updates (and removes a stale grant from) a no-owner-read (0300) destination directory -- validated on the path-based fallback via a forced-no-xattrat build and on the xattrat path; its non-Linux / proto-29 skips are added to the per-platform expect-skip lists. acl-symlink-race PASSES with a note (rather than skipping) where -VV reports no race-safe primitive, so its skip set stays kernel-independent -- the same workflow's RSYNC_EXPECT_SKIPPED is shared by no-xattrat and 6.13+ boxes.
automatic testsuite for rsync -*- text -*- We're trying to develop some more substantial tests to prevent rsync regressions. Ideally, all code changes or bug reports would come with an appropriate test suite. You can run these tests by typing "make check" in the build directory. The tests will run using the rsync binary in the build directory, so you do not need to do "make install" first. Indeed, you probably should not install rsync before running the tests. If you instead type "make installcheck" then the suite will test the rsync binary from its installed location (e.g. /usr/local/bin/rsync). You can use this to test a distribution build, or perhaps to run a new test suite against an old version of rsync. Note that in accordance with the GNU Standards, installcheck does not look for rsync on the path. If the tests pass, you should see a report to that effect. Some tests require being root or some other precondition, and so will normally not be checked -- look at the test scripts for more information. If the tests fail, you will see rather more output. The scratch directory will remain in the build directory. It would be useful if you could include the log messages when reporting a failure. These tests also run automatically on the build farm, and you can see the results on http://build.samba.org/.