Hi, I use rrsync[1] wrapper in SSH key via `command=` option to restrict mode and path of called rsync program.
I discovered some strange difference related to symlinks between rsync and openrsync when called via rrsync wrapper. openrsync errors with: /usr/src/usr.bin/rsync/symlinks.c:48: error: ./pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/test.md: readlink: No such file or directory even symlink is OK, see below. Any idea what's going on? Jiri [1] https://www.samba.org/ftp/unpacked/rsync/support/rrsync # sysctl kern.version kern.version=OpenBSD 6.5-beta (GENERIC.MP) #192: Fri Aug 9 23:41:57 MDT 2019 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP GOAL ==== I'm trying to synchronize following test tree from remote OpenBSD machine to a Linux client. # uname -s ; find /data/share/testovic/ -ls OpenBSD 15353856 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:26 /data/share/testovic/ 15353857 0 -rw-r--r-- 1 root wheel 0 Aug 15 23:10 /data/share/testovic/test1 15353858 0 lrwxr-xr-x 1 root wheel 12 Aug 15 23:10 /data/share/testovic/test2 -> /nonexistent 15353859 0 lrwxr-xr-x 1 root wheel 5 Aug 15 23:20 /data/share/testovic/test3 -> test1 15353860 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:25 /data/share/testovic/pub 15353861 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:25 /data/share/testovic/pub/www 15353862 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:25 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info 15353863 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:25 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info/themes 15353864 8 drwxr-xr-x 3 root wheel 512 Aug 15 23:25 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal 15353865 8 drwxr-xr-x 2 root wheel 512 Aug 15 23:26 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes 15353866 8 -rw-r--r-- 1 root wheel 865 Aug 15 23:26 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/post.md 15353867 0 lrwxr-xr-x 1 root wheel 7 Aug 15 23:26 /data/share/testovic/pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/test.md -> post.md 1 - /usr/local/bin/rsync via rrsync wrapper ========================= rrsync should restrict to reads only and only from /data/share/testovic path from="192.168.1.7",command="${HOME}/bin/rrsync -ro /data/share/testovic/",restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHd0j7FwSIF+b4QylSQHRoUyPR+9YQJrqj5jPngUmReC from client, reading from remote machine: # rsync -vva gw-share: ./ opening connection using: ssh gw-share rsync --server --sender -vvlogDtpre.iLsfxC . . (8 args) receiving incremental file list delta-transmission enabled ./ test1 test2 -> /nonexistent test3 -> test1 pub/ pub/www/ pub/www/xxxxxxxxxxxxxxxxxx.info/ pub/www/xxxxxxxxxxxxxxxxxx.info/themes/ pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/ pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/ pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/post.md pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/test.md -> post.md total: matches=0 hash_hits=0 false_alarms=0 data=865 sent 106 bytes received 1,402 bytes 3,016.00 bytes/sec total size is 889 speedup is 0.59 2 - openrsync via rrsync wrapper ==================== # grep openrsync ${HOME}/bin/rrsync use constant RSYNC => '/usr/bin/openrsync'; from="192.168.1.7",command="${HOME}/bin/rrsync -ro /data/share/testovic/",restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHd0j7FwSIF+b4QylSQHRoUyPR+9YQJrqj5jPngUmReC # rsync -vva gw-share: ./ opening connection using: ssh gw-share rsync --server --sender -vvlogDtpre.iLsfxC . . (8 args) receiving file list ... /usr/src/usr.bin/rsync/server.c:99: server detected client version 31, server version 27, seed 334847798 /usr/src/usr.bin/rsync/server.c:102: server starting sender /usr/src/usr.bin/rsync/symlinks.c:48: error: ./pub/www/xxxxxxxxxxxxxxxxxx.info/themes/minimal/archetypes/test.md: readlink: No such file or directory /usr/src/usr.bin/rsync/flist.c:985: error: symlink_read /usr/src/usr.bin/rsync/flist.c:1032: error: flist_gen_dirent /usr/src/usr.bin/rsync/sender.c:391: error: flist_gen /usr/src/usr.bin/rsync/server.c:124: error: rsync_sender rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]