dwww Home | Manual pages | Find package

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

       -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.2.7 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.2.7           20 Oct 2022                        rrsync(1)

Generated by dwww version 1.16 on Tue Dec 16 15:04:37 CET 2025.