Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
rrsync(1)			 User Commands			     rrsync(1)

NAME
       rrsync -	a script to setup restricted rsync users via ssh logins

SYNOPSIS
       rrsync [-ro|-rw]	[-munge] [-no-del] [-no-lock] [-no-overwrite]  DIR

       The  single non-option argument specifies the restricted	DIR to use. It
       can be relative to the user's home directory or an absolute path.

       The online version of this manpage (that	includes cross-linking of top-
       ics) is available at <https://download.samba.org/pub/rsync/rrsync.1>.

DESCRIPTION
       A user's	ssh login can be restricted to only allow the  running	of  an
       rsync transfer in one of	two easy ways:

       o      forcing the running of the rrsync	script

       o      forcing the running of an	rsync daemon-over-ssh command.

       Both  of	 these setups use a feature of ssh that	allows a command to be
       forced to run instead of	an interactive shell.  However,	if the	user's
       home  shell is bash, please see BASH SECURITY ISSUE for a potential is-
       sue.

       To use the rrsync script, edit the user's  ~/.ssh/authorized_keys  file
       and  add	 a  prefix  like one of	the following (followed	by a space) in
       front of	each ssh-key line that should be restricted:

	   command="rrsync DIR"
	   command="rrsync -ro DIR"
	   command="rrsync -munge -no-del DIR"

       Then, ensure that the rrsync script has your  desired  option  restric-
       tions. You may want to copy the script to a local bin dir with a	unique
       name  if	 you  want to have multiple configurations. One	or more	rrsync
       options can be specified	prior to the DIR if you	want  to  further  re-
       strict the transfer.

       To  use	an  rsync daemon setup,	edit the user's	~/.ssh/authorized_keys
       file and	add a prefix like one of the following (followed by  a	space)
       in front	of each	ssh-key	line that should be restricted:

	   command="rsync --server --daemon ."
	   command="rsync --server --daemon --config=/PATH/TO/rsyncd.conf ."

       Then, ensure that the rsyncd.conf file is created with one or more mod-
       ule  names  with	 the  appropriate  path	 and  option restrictions.  If
       rsync's --config	option is omitted, it defaults to ~/rsyncd.conf.   See
       the  rsyncd.conf(5)  manpage  for  details of how to configure an rsync
       daemon.

       When using rrsync, there	can be just one	restricted dir per  authorized
       key.   A	 daemon	setup, on the other hand, allows multiple module names
       inside the config file, each one	with its own path setting.

       The remainder of	this manpage is	dedicated to using the rrsync script.

OPTIONS
       -ro    Allow only reading from the DIR. Implies -no-del and -no-lock.

       -wo    Allow only writing to the	DIR.

       -munge Enable rsync's --munge-links on the server side.

       -no-del
	      Disable rsync's --delete*	and --remove* options.

       -no-lock
	      Avoid the	single-run (per-user) lock check.  Useful with -munge.

       -no-overwrite
	      Enforce --ignore-existing	on the	server.	 Prevents  overwriting
	      existing files when the server is	the receiver.

       -help, -h
	      Output this help message and exit.

SECURITY RESTRICTIONS
       The rrsync script validates the path arguments it is sent to try	to re-
       strict them to staying within the specified DIR.

       The  rrsync  script rejects rsync's --copy-links	option (by default) so
       that a copy cannot dereference a	symlink	within the DIR	to  get	 to  a
       file outside the	DIR.

       The rrsync script rejects rsync's --protect-args	(-s) option because it
       would  allow options to be sent to the server-side that the script can-
       not check.  If you want to support --protect-args, use  a  daemon-over-
       ssh setup.

       The  rrsync  script  accepts  just a subset of rsync's options that the
       real rsync uses when running the	server command.	 A  few	 extra	conve-
       nience  options	are also included to help it to	interact with BackupPC
       and accept some convenient user overrides.

       The script (or a	copy of	it) can	be manually edited if you want	it  to
       customize the option handling.

BASH SECURITY ISSUE
       If  your	 users	have  bash set as their	home shell, bash may try to be
       overly helpful and ensure that the user's login bashrc  files  are  run
       prior  to  executing  the forced	command.  This can be a	problem	if the
       user can	somehow	update their home bashrc files,	perhaps	 via  the  re-
       stricted	copy, a	shared home directory, or something similar.

       One  simple  way	 to avoid the issue is to switch the user to a simpler
       shell, such as dash.  When choosing the new home	shell, make sure  that
       you're not choosing bash	in disguise, as	it is unclear if it avoids the
       security	issue.

       Another	potential  fix	is to ensure that the user's home directory is
       not a shared mount and that they	have no	means of copying files outside
       of their	restricted directories.	 This may require you to force the en-
       abling of symlink munging on the	server side.

       A future	version	of openssh may have a change to	the handling of	forced
       commands	that allows it to avoid	using the user's home shell.

EXAMPLES
       The ~/.ssh/authorized_keys file might have lines	in it like this:

	   command="rrsync client/logs"	ssh-rsa	AAAAB3NzaC1yc2EAAAABIwAAAIEAzG...
	   command="rrsync -ro results"	ssh-rsa	AAAAB3NzaC1yc2EAAAABIwAAAIEAmk...

FILES
       ~/.ssh/authorized_keys

SEE ALSO
       rsync(1), rsyncd.conf(5)

VERSION
       This manpage is current for version 3.3.0 of rsync.

CREDITS
       rsync is	distributed under the GNU General  Public  License.   See  the
       file COPYING for	details.

       An  rsync  web  site is available at <https://rsync.samba.org/> and its
       github project is <https://github.com/WayneD/rsync>.

AUTHOR
       The original rrsync perl	script was written by Joe Smith.  Many	people
       have  later contributed to it.  The python version was created by Wayne
       Davison.

rrsync from rsync 3.3.0		  6 Apr	2024			     rrsync(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rrsync&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help