rsync: Add rrsync script

Rrsync is a perl script that is supplied as an extra with the rsync program.
It must be used in conjunction with openssh-server or openssh-server-pam
as it requires ~/.ssh/authorized_keys which is not supported by dropbear.

Rrsync allows selective access to subdirectories in either read-only, write-only or read-write,
depending on settings in authorized_keys. This allows for safe, restrictive access.
It's particularly useful for automated backup purposes.

An example usage would be this entry:

command="/usr/bin/rrsync -ro /home" <public key here>

This would allow a system connecting with this public key to be able to rsync FROM the
/home directory tree only. It could not write to this directory, nor read from any other directory.

Signed-off-by: Matt Reeve <matt@mreeve.com>
This commit is contained in:
Matt Reeve 2021-05-12 14:28:22 +01:00 committed by Polynomdivision
parent 59f8342dae
commit 081229aa09
1 changed files with 21 additions and 0 deletions

View File

@ -69,6 +69,15 @@ define Package/rsyncd
URL:=https://rsync.samba.org/
endef
define Package/rrsync
SECTION:=net
CATEGORY:=Network
SUBMENU:=File Transfer
TITLE:=Restricted rsync script
DEPENDS:=+rsync +perlbase-file +perl @(PACKAGE_openssh-server||PACKAGE_openssh-server-pam)
URL:=https://www.samba.org/ftp/unpacked/rsync/support/rrsync
endef
define Package/rsync/description
rsync is a program that allows files to be copied to and from remote machines
in much the same way as rcp. It has many more options than rcp, and uses the
@ -100,5 +109,17 @@ define Package/rsyncd/install
$(INSTALL_BIN) ./files/rsyncd.init $(1)/etc/init.d/rsyncd
endef
define Package/rrsync/description
rrsync is a script which wraps around rsync to restrict its permission to a
particular subdirectory via ~/.ssh/authorized_keys and/or to read-only
or write-only mode
endef
define Package/rrsync/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/support/rrsync $(1)/usr/bin
endef
$(eval $(call BuildPackage,rsync))
$(eval $(call BuildPackage,rsyncd))
$(eval $(call BuildPackage,rrsync))