Files
rsync/testsuite
Andrew TridgellandClaude Opus 4.7 c38f20c5ff clientserver: fix hostname ACL bypass when using daemon chroot
On an rsync daemon configured with "daemon chroot", the reverse-DNS
lookup of the connecting client was performed *after* the chroot
had been entered. If the chroot did not contain the files glibc
needs for resolution (/etc/resolv.conf, /etc/nsswitch.conf,
/etc/hosts, NSS service modules), the lookup failed and
client_name() returned "UNKNOWN". Hostname-based deny rules
("hosts deny = *.evil.example") therefore could not match, and
an attacker controlling their PTR record could connect from a
hostname the administrator had intended to deny. IP-based ACLs
were unaffected.

Do the reverse DNS lookup before chroot/setuid; client_name()
caches its result, so the post-chroot call uses the cached value
and hostname-based ACLs work even when DNS is unavailable
post-chroot.

Adds testsuite/daemon-chroot-acl.test as end-to-end regression
coverage. The test sets up an empty chroot directory, configures
"hosts deny = <localhost-resolved-name>" with daemon chroot, and
asserts the connection is refused with @ERROR access denied.
Uses unshare --user --map-root-user for non-root CAP_SYS_CHROOT;
skips cleanly on non-Linux or when user namespaces aren't
available.

Reporter: Joshua Rogers (MegaManSec).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 10:01:22 +10:00
..
2022-03-26 10:01:12 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2022-01-15 17:21:01 -08:00
2020-07-07 11:43:33 -07:00
2025-08-23 17:13:28 +10:00
2025-08-23 17:30:59 +10:00
2022-01-15 17:21:01 -08:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2025-12-31 11:37:27 +11:00
2021-09-26 16:57:55 -07:00
2025-01-15 05:30:32 +11:00
2021-09-26 16:57:55 -07:00
2021-09-26 16:57:55 -07:00
2025-01-15 05:30:32 +11:00
2021-09-26 16:57:55 -07:00

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/.