version 1.1.1.2, 2013/10/14 07:51:14
|
version 1.1.1.4, 2021/03/17 00:32:36
|
Line 1
|
Line 1
|
.TH "rsyncd.conf" "5" "28 Sep 2013" "" "" | .TH "rsyncd.conf" "5" "06 Aug 2020" "rsyncd.conf 3.2.3" "User Commands" |
| .P |
.SH "NAME" |
.SH "NAME" |
|
.P |
rsyncd.conf \- configuration file for rsync in daemon mode |
rsyncd.conf \- configuration file for rsync in daemon mode |
|
.P |
.SH "SYNOPSIS" |
.SH "SYNOPSIS" |
| .P |
.PP | |
rsyncd.conf |
rsyncd.conf |
.PP | .P |
.SH "DESCRIPTION" |
.SH "DESCRIPTION" |
| .P |
.PP | The rsyncd.conf file is the runtime configuration file for rsync when run as an |
The rsyncd.conf file is the runtime configuration file for rsync when | rsync daemon. |
run as an rsync daemon. | .P |
.PP | The rsyncd.conf file controls authentication, access, logging and available |
The rsyncd.conf file controls authentication, access, logging and | modules. |
available modules. | .P |
.PP | |
.SH "FILE FORMAT" |
.SH "FILE FORMAT" |
| .P |
.PP | The file consists of modules and parameters. A module begins with the name of |
The file consists of modules and parameters. A module begins with the | the module in square brackets and continues until the next module begins. |
name of the module in square brackets and continues until the next | Modules contain parameters of the form \fBname\ =\ value\fP. |
module begins. Modules contain parameters of the form \(dq\&name = value\(dq\&. | .P |
.PP | The file is line-based\ \-\- that is, each newline-terminated line represents |
The file is line\-based \-\- that is, each newline\-terminated line represents | |
either a comment, a module name or a parameter. |
either a comment, a module name or a parameter. |
.PP | .P |
Only the first equals sign in a parameter is significant. Whitespace before | Only the first equals sign in a parameter is significant. Whitespace before or |
or after the first equals sign is discarded. Leading, trailing and internal | after the first equals sign is discarded. Leading, trailing and internal |
whitespace in module and parameter names is irrelevant. Leading and | whitespace in module and parameter names is irrelevant. Leading and trailing |
trailing whitespace in a parameter value is discarded. Internal whitespace | whitespace in a parameter value is discarded. Internal whitespace within a |
within a parameter value is retained verbatim. | parameter value is retained verbatim. |
.PP | .P |
Any line \fBbeginning\fP with a hash (#) is ignored, as are lines containing | Any line \fBbeginning\fP with a hash (\fB#\fP) is ignored, as are lines containing |
only whitespace. (If a hash occurs after anything other than leading |
only whitespace. (If a hash occurs after anything other than leading |
whitespace, it is considered a part of the line\(cq\&s content.) | whitespace, it is considered a part of the line's content.) |
.PP | .P |
Any line ending in a \e is \(dq\&continued\(dq\& on the next line in the | Any line ending in a \fB\\\fP is "continued" on the next line in the customary UNIX |
customary UNIX fashion. | fashion. |
.PP | .P |
The values following the equals sign in parameters are all either a string | The values following the equals sign in parameters are all either a string (no |
(no quotes needed) or a boolean, which may be given as yes/no, 0/1 or | quotes needed) or a boolean, which may be given as yes/no, 0/1 or true/false. |
true/false. Case is not significant in boolean values, but is preserved | Case is not significant in boolean values, but is preserved in string values. |
in string values. | .P |
.PP | |
.SH "LAUNCHING THE RSYNC DAEMON" |
.SH "LAUNCHING THE RSYNC DAEMON" |
| .P |
.PP | |
The rsync daemon is launched by specifying the \fB\-\-daemon\fP option to |
The rsync daemon is launched by specifying the \fB\-\-daemon\fP option to |
rsync. |
rsync. |
.PP | .P |
The daemon must run with root privileges if you wish to use chroot, to | The daemon must run with root privileges if you wish to use chroot, to bind to |
bind to a port numbered under 1024 (as is the default 873), or to set | a port numbered under 1024 (as is the default 873), or to set file ownership. |
file ownership. Otherwise, it must just have permission to read and | Otherwise, it must just have permission to read and write the appropriate data, |
write the appropriate data, log, and lock files. | log, and lock files. |
.PP | .P |
You can launch it either via inetd, as a stand\-alone daemon, or from | You can launch it either via inetd, as a stand-alone daemon, or from an rsync |
an rsync client via a remote shell. If run as a stand\-alone daemon then | client via a remote shell. If run as a stand-alone daemon then just run the |
just run the command \(dq\&\fBrsync \-\-daemon\fP\(dq\& from a suitable startup script. | command "\fBrsync\ \-\-daemon\fP" from a suitable startup script. |
.PP | .P |
When run via inetd you should add a line like this to /etc/services: |
When run via inetd you should add a line like this to /etc/services: |
.PP | .RS 4 |
.nf | .P |
rsync 873/tcp | .nf |
.fi | rsync 873/tcp |
| .fi |
.PP | .RE |
| .P |
and a single line something like this to /etc/inetd.conf: |
and a single line something like this to /etc/inetd.conf: |
.PP | .RS 4 |
.nf | .P |
rsync stream tcp nowait root /usr/bin/rsync rsyncd \-\-daemon | .nf |
.fi | rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon |
| .fi |
.PP | .RE |
Replace \(dq\&/usr/bin/rsync\(dq\& with the path to where you have rsync installed on | .P |
| Replace "/usr/bin/rsync" with the path to where you have rsync installed on |
your system. You will then need to send inetd a HUP signal to tell it to |
your system. You will then need to send inetd a HUP signal to tell it to |
reread its config file. |
reread its config file. |
.PP | .P |
Note that you should \fBnot\fP send the rsync daemon a HUP signal to force | Note that you should \fBnot\fP send the rsync daemon a HUP signal to force it to |
it to reread the \f(CWrsyncd.conf\fP file. The file is re\-read on each client | reread the \fBrsyncd.conf\fP file. The file is re-read on each client connection. |
connection. | .P |
.PP | |
.SH "GLOBAL PARAMETERS" |
.SH "GLOBAL PARAMETERS" |
| .P |
.PP | The first parameters in the file (before a [module] header) are the global |
The first parameters in the file (before a [module] header) are the | parameters. Rsync also allows for the use of a "[global]" module name to |
global parameters. | indicate the start of one or more global-parameter sections (the name must be |
.PP | lower case). |
You may also include any module parameters in the global part of the | .P |
config file in which case the supplied value will override the | You may also include any module parameters in the global part of the config |
default for that parameter. | file in which case the supplied value will override the default for that |
.PP | parameter. |
| .P |
You may use references to environment variables in the values of parameters. |
You may use references to environment variables in the values of parameters. |
String parameters will have %VAR% references expanded as late as possible (when |
String parameters will have %VAR% references expanded as late as possible (when |
the string is used in the program), allowing for the use of variables that | the string is first used in the program), allowing for the use of variables |
rsync sets at connection time, such as RSYNC_USER_NAME. Non\-string parameters | that rsync sets at connection time, such as RSYNC_USER_NAME. Non-string |
(such as true/false settings) are expanded when read from the config file. If | parameters (such as true/false settings) are expanded when read from the config |
a variable does not exist in the environment, or if a sequence of characters is | file. If a variable does not exist in the environment, or if a sequence of |
not a valid reference (such as an un\-paired percent sign), the raw characters | characters is not a valid reference (such as an un-paired percent sign), the |
are passed through unchanged. This helps with backward compatibility and | raw characters are passed through unchanged. This helps with backward |
safety (e.g. expanding a non\-existent %VAR% to an empty string in a path could | compatibility and safety (e.g. expanding a non-existent %VAR% to an empty |
result in a very unsafe path). The safest way to insert a literal % into a | string in a path could result in a very unsafe path). The safest way to insert |
value is to use %%. | a literal % into a value is to use %%. |
.PP | .P |
.IP "\fBmotd file\fP" | .IP "\fBmotd\ file\fP" |
This parameter allows you to specify a | This parameter allows you to specify a "message of the day" to display to |
\(dq\&message of the day\(dq\& to display to clients on each connect. This | clients on each connect. This usually contains site information and any |
usually contains site information and any legal notices. The default | legal notices. The default is no motd file. This can be overridden by the |
is no motd file. | \fB\-\-dparam=motdfile=FILE\fP command-line option when starting the daemon. |
This can be overridden by the \fB\-\-dparam=motdfile=FILE\fP | .IP "\fBpid\ file\fP" |
command\-line option when starting the daemon. | This parameter tells the rsync daemon to write its process ID to that file. |
.IP | The rsync keeps the file locked so that it can know when it is safe to |
.IP "\fBpid file\fP" | overwrite an existing file. |
This parameter tells the rsync daemon to write | .IP |
its process ID to that file. If the file already exists, the rsync | The filename can be overridden by the \fB\-\-dparam=pidfile=FILE\fP command-line |
daemon will abort rather than overwrite the file. | option when starting the daemon. |
This can be overridden by the \fB\-\-dparam=pidfile=FILE\fP | |
command\-line option when starting the daemon. | |
.IP | |
.IP "\fBport\fP" |
.IP "\fBport\fP" |
You can override the default port the daemon will listen on | You can override the default port the daemon will listen on by specifying |
by specifying this value (defaults to 873). This is ignored if the daemon | this value (defaults to 873). This is ignored if the daemon is being run |
is being run by inetd, and is superseded by the \fB\-\-port\fP command\-line option. | by inetd, and is superseded by the \fB\-\-port\fP command-line option. |
.IP | |
.IP "\fBaddress\fP" |
.IP "\fBaddress\fP" |
You can override the default IP address the daemon | You can override the default IP address the daemon will listen on by |
will listen on by specifying this value. This is ignored if the daemon is | specifying this value. This is ignored if the daemon is being run by |
being run by inetd, and is superseded by the \fB\-\-address\fP command\-line option. | inetd, and is superseded by the \fB\-\-address\fP command-line option. |
.IP | .IP "\fBsocket\ options\fP" |
.IP "\fBsocket options\fP" | This parameter can provide endless fun for people who like to tune their |
This parameter can provide endless fun for people | systems to the utmost degree. You can set all sorts of socket options which |
who like to tune their systems to the utmost degree. You can set all | may make transfers faster (or slower!). Read the man page for the |
sorts of socket options which may make transfers faster (or | \fBsetsockopt()\fP system call for details on some of the options you may be |
slower!). Read the man page for the | able to set. By default no special socket options are set. These settings |
\f(CWsetsockopt()\fP | can also be specified via the \fB\-\-sockopts\fP command-line option. |
system call for | .IP "\fBlisten\ backlog\fP" |
details on some of the options you may be able to set. By default no | You can override the default backlog value when the daemon listens for |
special socket options are set. These settings can also be specified | connections. It defaults to 5. |
via the \fB\-\-sockopts\fP command\-line option. | .IP "\fBuse\ slp\fP" |
.IP | You can enable Service Location Protocol support by enabling this global |
.IP "\fBlisten backlog\fP" | parameter. The default is "false". |
You can override the default backlog value when the | .IP "\fBslp\ refresh\fP" |
daemon listens for connections. It defaults to 5. | This parameter is used to determine how long service advertisements are |
.IP | valid (measured in seconds), and is only applicable if you have Service |
| Location Protocol support compiled in. If this is not set or is set to |
| zero, then service advertisements never time out. If this is set to less |
| than 120 seconds, then 120 seconds is used. If it is set to more than |
| 65535, then 65535 is used (which is a limitation of SLP). Using 3600 |
| (one hour) is a good number if you tend to change your configuration. |
| .P |
.SH "MODULE PARAMETERS" |
.SH "MODULE PARAMETERS" |
| .P |
.PP | After the global parameters you should define a number of modules, each module |
After the global parameters you should define a number of modules, each | exports a directory tree as a symbolic name. Modules are exported by specifying |
module exports a directory tree as a symbolic name. Modules are | a module name in square brackets [module] followed by the parameters for that |
exported by specifying a module name in square brackets [module] | module. The module name cannot contain a slash or a closing square bracket. |
followed by the parameters for that module. | If the name contains whitespace, each internal sequence of whitespace will be |
The module name cannot contain a slash or a closing square bracket. If the | |
name contains whitespace, each internal sequence of whitespace will be | |
changed into a single space, while leading or trailing whitespace will be |
changed into a single space, while leading or trailing whitespace will be |
discarded. | discarded. Also, the name cannot be "global" as that exact name indicates that |
.PP | global parameters follow (see above). |
| .P |
As with GLOBAL PARAMETERS, you may use references to environment variables in |
As with GLOBAL PARAMETERS, you may use references to environment variables in |
the values of parameters. See the GLOBAL PARAMETERS section for more details. |
the values of parameters. See the GLOBAL PARAMETERS section for more details. |
.PP | .P |
.IP "\fBcomment\fP" |
.IP "\fBcomment\fP" |
This parameter specifies a description string | This parameter specifies a description string that is displayed next to the |
that is displayed next to the module name when clients obtain a list | module name when clients obtain a list of available modules. The default is |
of available modules. The default is no comment. | no comment. |
.IP | |
.IP "\fBpath\fP" |
.IP "\fBpath\fP" |
This parameter specifies the directory in the daemon\(cq\&s | This parameter specifies the directory in the daemon's filesystem to make |
filesystem to make available in this module. You must specify this parameter | available in this module. You must specify this parameter for each module |
for each module in \f(CWrsyncd.conf\fP. | in \fBrsyncd.conf\fP. |
.IP | .IP |
You may base the path\(cq\&s value off of an environment variable by surrounding | You may base the path's value off of an environment variable by surrounding |
the variable name with percent signs. You can even reference a variable |
the variable name with percent signs. You can even reference a variable |
that is set by rsync when the user connects. | that is set by rsync when the user connects. For example, this would use |
For example, this would use the authorizing user\(cq\&s name in the path: | the authorizing user's name in the path: |
.IP | .RS 4 |
.nf | .IP |
path = /home/%RSYNC_USER_NAME% | .nf |
.fi | path = /home/%RSYNC_USER_NAME% |
| .fi |
.IP | .RE |
It is fine if the path includes internal spaces \-\- they will be retained | .IP |
verbatim (which means that you shouldn\(cq\&t try to escape them). If your final | It is fine if the path includes internal spaces\ \-\- they will be retained |
directory has a trailing space (and this is somehow not something you wish to | verbatim (which means that you shouldn't try to escape them). If your |
fix), append a trailing slash to the path to avoid losing the trailing | final directory has a trailing space (and this is somehow not something you |
whitespace. | wish to fix), append a trailing slash to the path to avoid losing the |
.IP | trailing whitespace. |
.IP "\fBuse chroot\fP" | .IP "\fBuse\ chroot\fP" |
If \(dq\&use chroot\(dq\& is true, the rsync daemon will chroot | If "use chroot" is true, the rsync daemon will chroot to the "path" before |
to the \(dq\&path\(dq\& before starting the file transfer with the client. This has | starting the file transfer with the client. This has the advantage of |
the advantage of extra protection against possible implementation security | extra protection against possible implementation security holes, but it has |
holes, but it has the disadvantages of requiring super\-user privileges, | the disadvantages of requiring super-user privileges, of not being able to |
of not being able to follow symbolic links that are either absolute or outside | follow symbolic links that are either absolute or outside of the new root |
of the new root path, and of complicating the preservation of users and groups | path, and of complicating the preservation of users and groups by name (see |
by name (see below). | below). |
.IP | .IP |
As an additional safety feature, you can specify a dot\-dir in the module\(cq\&s | As an additional safety feature, you can specify a dot-dir in the module's |
\(dq\&path\(dq\& to indicate the point where the chroot should occur. This allows rsync | "path" to indicate the point where the chroot should occur. This allows |
to run in a chroot with a non\-\(dq\&/\(dq\& path for the top of the transfer hierarchy. | rsync to run in a chroot with a non-"/" path for the top of the transfer |
Doing this guards against unintended library loading (since those absolute | hierarchy. Doing this guards against unintended library loading (since |
paths will not be inside the transfer hierarchy unless you have used an unwise | those absolute paths will not be inside the transfer hierarchy unless you |
pathname), and lets you setup libraries for the chroot that are outside of the | have used an unwise pathname), and lets you setup libraries for the chroot |
transfer. For example, specifying \(dq\&/var/rsync/./module1\(dq\& will chroot to the | that are outside of the transfer. For example, specifying |
\(dq\&/var/rsync\(dq\& directory and set the inside\-chroot path to \(dq\&/module1\(dq\&. If you | "/var/rsync/./module1" will chroot to the "/var/rsync" directory and set |
had omitted the dot\-dir, the chroot would have used the whole path, and the | the inside-chroot path to "/module1". If you had omitted the dot-dir, the |
inside\-chroot path would have been \(dq\&/\(dq\&. | chroot would have used the whole path, and the inside-chroot path would |
.IP | have been "/". |
When \(dq\&use chroot\(dq\& is false or the inside\-chroot path is not \(dq\&/\(dq\&, rsync will: | .IP |
(1) munge symlinks by | When both "use chroot" and "daemon chroot" are false, OR the inside-chroot |
default for security reasons (see \(dq\&munge symlinks\(dq\& for a way to turn this | path of "use chroot" is not "/", rsync will: (1) munge symlinks by default |
off, but only if you trust your users), (2) substitute leading slashes in | for security reasons (see "munge symlinks" for a way to turn this off, but |
absolute paths with the module\(cq\&s path (so that options such as | only if you trust your users), (2) substitute leading slashes in absolute |
\fB\-\-backup\-dir\fP, \fB\-\-compare\-dest\fP, etc. interpret an absolute path as | paths with the module's path (so that options such as \fB\-\-backup-dir\fP, |
rooted in the module\(cq\&s \(dq\&path\(dq\& dir), and (3) trim \(dq\&..\(dq\& path elements from | \fB\-\-compare-dest\fP, etc. interpret an absolute path as rooted in the module's |
args if rsync believes they would escape the module hierarchy. | "path" dir), and (3) trim ".." path elements from args if rsync believes |
The default for \(dq\&use chroot\(dq\& is true, and is the safer choice (especially | they would escape the module hierarchy. The default for "use chroot" is |
if the module is not read\-only). | true, and is the safer choice (especially if the module is not read-only). |
.IP | .IP |
When this parameter is enabled, rsync will not attempt to map users and groups | When this parameter is enabled \fIand\fP the "name converter" parameter is |
by name (by default), but instead copy IDs as though \fB\-\-numeric\-ids\fP had | \fInot\fP set, the "numeric ids" parameter will default to being enabled |
been specified. In order to enable name\-mapping, rsync needs to be able to | (disabling name lookups). This means that if you manually setup |
use the standard library functions for looking up names and IDs (i.e. | name-lookup libraries in your chroot (instead of using a name converter) |
\f(CWgetpwuid()\fP | that you need to explicitly set \fBnumeric\ ids\ =\ false\fP for rsync to do name |
, | lookups. |
\f(CWgetgrgid()\fP | .IP |
, | If you copy library resources into the module's chroot area, you should |
\f(CWgetpwname()\fP | protect them through your OS's normal user/group or ACL settings (to |
, and | prevent the rsync module's user from being able to change them), and then |
\f(CWgetgrnam()\fP | hide them from the user's view via "exclude" (see how in the discussion of |
). | that parameter). However, it's easier and safer to setup a name converter. |
This means the rsync | .IP "\fBdaemon\ chroot\fP" |
process in the chroot hierarchy will need to have access to the resources | This parameter specifies a path to which the daemon will chroot before |
used by these library functions (traditionally /etc/passwd and | beginning communication with clients. Module paths (and any "use chroot" |
/etc/group, but perhaps additional dynamic libraries as well). | settings) will then be related to this one. This lets you choose if you |
.IP | want the whole daemon to be chrooted (with this setting), just the |
If you copy the necessary resources into the module\(cq\&s chroot area, you | transfers to be chrooted (with "use chroot"), or both. Keep in mind that |
should protect them through your OS\(cq\&s normal user/group or ACL settings (to | the "daemon chroot" area may need various OS/lib/etc files installed to |
prevent the rsync module\(cq\&s user from being able to change them), and then | allow the daemon to function. By default the daemon runs without any |
hide them from the user\(cq\&s view via \(dq\&exclude\(dq\& (see how in the discussion of | chrooting. |
that parameter). At that point it will be safe to enable the mapping of users | .IP "\fBproxy\ protocol\fP" |
and groups by name using the \(dq\&numeric ids\(dq\& daemon parameter (see below). | When this parameter is enabled, all incoming connections must start with a |
.IP | V1 or V2 proxy protocol header. If the header is not found, the connection |
Note also that you are free to setup custom user/group information in the | is closed. |
chroot area that is different from your normal system. For example, you | .IP |
could abbreviate the list of users and groups. | Setting this to \fBtrue\fP requires a proxy server to forward source IP |
.IP | information to rsync, allowing you to log proper IP/host info and make use |
.IP "\fBnumeric ids\fP" | of client-oriented IP restrictions. The default of \fBfalse\fP means that the |
Enabling this parameter disables the mapping | IP information comes directly from the socket's metadata. If rsync is not |
of users and groups by name for the current daemon module. This prevents | behind a proxy, this should be disabled. |
the daemon from trying to load any user/group\-related files or libraries. | .IP |
This enabling makes the transfer behave as if the client had passed | \fICAUTION\fP: using this option can be dangerous if you do not ensure that |
the \fB\-\-numeric\-ids\fP command\-line option. By default, this parameter is | only the proxy is allowed to connect to the rsync port. If any non-proxied |
enabled for chroot modules and disabled for non\-chroot modules. | connections are allowed through, the client will be able to use a modified |
.IP | rsync to spoof any remote IP address that they desire. You can lock this |
A chroot\-enabled module should not have this parameter enabled unless you\(cq\&ve | down using something like iptables \fB\-uid-owner\ root\fP rules (for strict |
taken steps to ensure that the module has the necessary resources it needs | localhost access), various firewall rules, or you can require password |
to translate names, and that it is not possible for a user to change those | authorization so that any spoofing by users will not grant extra access. |
resources. | .IP |
.IP | This setting is global. If you need some modules to require this and not |
.IP "\fBmunge symlinks\fP" | others, then you will need to setup multiple rsync daemon processes on |
This parameter tells rsync to modify | different ports. |
all symlinks in the same way as the (non\-daemon\-affecting) | .IP "\fBname\ converter\fP" |
\fB\-\-munge\-links\fP command\-line option (using a method described below). | This parameter lets you specify a program that will be run by the rsync |
This should help protect your files from user trickery when | daemon to do user & group conversions between names & ids. This script |
your daemon module is writable. The default is disabled when \(dq\&use chroot\(dq\& | is started prior to any chroot being setup, and runs as the daemon user |
is on and the inside\-chroot path is \(dq\&/\(dq\&, otherwise it is enabled. | (not the transfer user). You can specify a fully qualified pathname or |
.IP | a program name that is on the $PATH. |
If you disable this parameter on a daemon that is not read\-only, there | .IP |
are tricks that a user can play with uploaded symlinks to access | The program can be used to do normal user & group lookups without having to |
daemon\-excluded items (if your module has any), and, if \(dq\&use chroot\(dq\& | put any extra files into the chroot area of the module \fIor\fP you can do |
is off, rsync can even be tricked into showing or changing data that | customized conversions. |
is outside the module\(cq\&s path (as access\-permissions allow). | .IP |
.IP | The nameconvert program has access to all of the environment variables that |
The way rsync disables the use of symlinks is to prefix each one with | are described in the section on \fBpre-xfer\ exec\fP. This is useful if you |
the string \(dq\&/rsyncd\-munged/\(dq\&. This prevents the links from being used | want to customize the conversion using information about the module and/or |
as long as that directory does not exist. When this parameter is enabled, | the copy request. |
rsync will refuse to run if that path is a directory or a symlink to | .IP |
a directory. When using the \(dq\&munge symlinks\(dq\& parameter in a chroot area | There is a sample python script in the support dir named "nameconvert" that |
that has an inside\-chroot path of \(dq\&/\(dq\&, you should add \(dq\&/rsyncd\-munged/\(dq\& | implements the normal user & group lookups. Feel free to customize it or |
to the exclude setting for the module so that | just use it as documentation to implement your own. |
a user can\(cq\&t try to create it. | .IP "\fBnumeric\ ids\fP" |
.IP | Enabling this parameter disables the mapping of users and groups by name |
Note: rsync makes no attempt to verify that any pre\-existing symlinks in | for the current daemon module. This prevents the daemon from trying to |
the module\(cq\&s hierarchy are as safe as you want them to be (unless, of | load any user/group-related files or libraries. This enabling makes the |
| transfer behave as if the client had passed the \fB\-\-numeric-ids\fP |
| command-line option. By default, this parameter is enabled for chroot |
| modules and disabled for non-chroot modules. Also keep in mind that |
| uid/gid preservation requires the module to be running as root (see "uid") |
| or for "fake super" to be configured. |
| .IP |
| A chroot-enabled module should not have this parameter set to false unless |
| you're using a "name converter" program \fIor\fP you've taken steps to ensure |
| that the module has the necessary resources it needs to translate names and |
| that it is not possible for a user to change those resources. |
| .IP "\fBmunge\ symlinks\fP" |
| This parameter tells rsync to modify all symlinks in the same way as the |
| (non-daemon-affecting) \fB\-\-munge-links\fP command-line option (using a method |
| described below). This should help protect your files from user trickery |
| when your daemon module is writable. The default is disabled when |
| "use chroot" is on with an inside-chroot path of "/", OR if "daemon chroot" |
| is on, otherwise it is enabled. |
| .IP |
| If you disable this parameter on a daemon that is not read-only, there are |
| tricks that a user can play with uploaded symlinks to access |
| daemon-excluded items (if your module has any), and, if "use chroot" is |
| off, rsync can even be tricked into showing or changing data that is |
| outside the module's path (as access-permissions allow). |
| .IP |
| The way rsync disables the use of symlinks is to prefix each one with the |
| string "/rsyncd-munged/". This prevents the links from being used as long |
| as that directory does not exist. When this parameter is enabled, rsync |
| will refuse to run if that path is a directory or a symlink to a directory. |
| When using the "munge symlinks" parameter in a chroot area that has an |
| inside-chroot path of "/", you should add "/rsyncd-munged/" to the exclude |
| setting for the module so that a user can't try to create it. |
| .IP |
| Note: rsync makes no attempt to verify that any pre-existing symlinks in |
| the module's hierarchy are as safe as you want them to be (unless, of |
course, it just copied in the whole hierarchy). If you setup an rsync |
course, it just copied in the whole hierarchy). If you setup an rsync |
daemon on a new area or locally add symlinks, you can manually protect your |
daemon on a new area or locally add symlinks, you can manually protect your |
symlinks from being abused by prefixing \(dq\&/rsyncd\-munged/\(dq\& to the start of | symlinks from being abused by prefixing "/rsyncd-munged/" to the start of |
every symlink\(cq\&s value. There is a perl script in the support directory | every symlink's value. There is a perl script in the support directory of |
of the source code named \(dq\&munge\-symlinks\(dq\& that can be used to add or remove | the source code named "munge-symlinks" that can be used to add or remove |
this prefix from your symlinks. |
this prefix from your symlinks. |
.IP | .IP |
When this parameter is disabled on a writable module and \(dq\&use chroot\(dq\& is off | When this parameter is disabled on a writable module and "use chroot" is |
(or the inside\-chroot path is not \(dq\&/\(dq\&), | off (or the inside-chroot path is not "/"), incoming symlinks will be |
incoming symlinks will be modified to drop a leading slash and to remove \(dq\&..\(dq\& | modified to drop a leading slash and to remove ".." path elements that |
path elements that rsync believes will allow a symlink to escape the module\(cq\&s | rsync believes will allow a symlink to escape the module's hierarchy. |
hierarchy. There are tricky ways to work around this, though, so you had | There are tricky ways to work around this, though, so you had better trust |
better trust your users if you choose this combination of parameters. | your users if you choose this combination of parameters. |
.IP | |
.IP "\fBcharset\fP" |
.IP "\fBcharset\fP" |
This specifies the name of the character set in which the | This specifies the name of the character set in which the module's |
module\(cq\&s filenames are stored. If the client uses an \fB\-\-iconv\fP option, | filenames are stored. If the client uses an \fB\-\-iconv\fP option, the daemon |
the daemon will use the value of the \(dq\&charset\(dq\& parameter regardless of the | will use the value of the "charset" parameter regardless of the character |
character set the client actually passed. This allows the daemon to | set the client actually passed. This allows the daemon to support charset |
support charset conversion in a chroot module without extra files in the | conversion in a chroot module without extra files in the chroot area, and |
chroot area, and also ensures that name\-translation is done in a consistent | also ensures that name-translation is done in a consistent manner. If the |
manner. If the \(dq\&charset\(dq\& parameter is not set, the \fB\-\-iconv\fP option is | "charset" parameter is not set, the \fB\-\-iconv\fP option is refused, just as if |
refused, just as if \(dq\&iconv\(dq\& had been specified via \(dq\&refuse options\(dq\&. | "iconv" had been specified via "refuse options". |
.IP | .IP |
If you wish to force users to always use \fB\-\-iconv\fP for a particular | If you wish to force users to always use \fB\-\-iconv\fP for a particular module, |
module, add \(dq\&no\-iconv\(dq\& to the \(dq\&refuse options\(dq\& parameter. Keep in mind | add "no-iconv" to the "refuse options" parameter. Keep in mind that this |
that this will restrict access to your module to very new rsync clients. | will restrict access to your module to very new rsync clients. |
.IP | .IP "\fBmax\ connections\fP" |
.IP "\fBmax connections\fP" | This parameter allows you to specify the maximum number of simultaneous |
This parameter allows you to | connections you will allow. Any clients connecting when the maximum has |
specify the maximum number of simultaneous connections you will allow. | been reached will receive a message telling them to try later. The default |
Any clients connecting when the maximum has been reached will receive a | is 0, which means no limit. A negative value disables the module. See |
message telling them to try later. The default is 0, which means no limit. | also the "lock file" parameter. |
A negative value disables the module. | .IP "\fBlink\ by\ hash\ dir\fP" |
See also the \(dq\&lock file\(dq\& parameter. | When the "link by hash dir" parameter is set to a non-empty string, |
.IP | received files will be hard linked into \fBDIR\fP, a link farm arranged by |
.IP "\fBlog file\fP" | MD5 file hash. See the \fB\-\-link-by-hash\fP option for a full explanation. |
When the \(dq\&log file\(dq\& parameter is set to a non\-empty | .IP |
string, the rsync daemon will log messages to the indicated file rather | The \fBDIR\fP must be accessible inside any chroot restrictions for the |
than using syslog. This is particularly useful on systems (such as AIX) | module, but can exist outside the transfer location if there is an |
where | inside-the-chroot path to the module (see "use chroot"). Note that a |
\f(CWsyslog()\fP | user-specified option does not allow this outside-the-transfer-area |
doesn\(cq\&t work for chrooted programs. The file is | placement. |
opened before | .IP |
\f(CWchroot()\fP | If this parameter is set, it will disable the \fB\-\-link-by-hash\fP command-line |
is called, allowing it to be placed outside | option for copies into the module. |
the transfer. If this value is set on a per\-module basis instead of | .P |
globally, the global log will still contain any authorization failures | The default is for this parameter to be unset. |
or config\-file error messages. | .P |
.IP | .IP "\fBlog\ file\fP" |
If the daemon fails to open the specified file, it will fall back to | When the "log file" parameter is set to a non-empty string, the rsync |
using syslog and output an error about the failure. (Note that the | daemon will log messages to the indicated file rather than using syslog. |
failure to open the specified log file used to be a fatal error.) | This is particularly useful on systems (such as AIX) where \fBsyslog()\fP |
.IP | doesn't work for chrooted programs. The file is opened before \fBchroot()\fP |
This setting can be overridden by using the \fB\-\-log\-file=FILE\fP or | is called, allowing it to be placed outside the transfer. If this value is |
\fB\-\-dparam=logfile=FILE\fP command\-line options. The former overrides | set on a per-module basis instead of globally, the global log will still |
all the log\-file parameters of the daemon and all module settings. | contain any authorization failures or config-file error messages. |
The latter sets the daemon\(cq\&s log file and the default for all the | .IP |
modules, which still allows modules to override the default setting. | If the daemon fails to open the specified file, it will fall back to using |
.IP | syslog and output an error about the failure. (Note that the failure to |
.IP "\fBsyslog facility\fP" | open the specified log file used to be a fatal error.) |
This parameter allows you to | .IP |
specify the syslog facility name to use when logging messages from the | This setting can be overridden by using the \fB\-\-log-file=FILE\fP or |
rsync daemon. You may use any standard syslog facility name which is | \fB\-\-dparam=logfile=FILE\fP command-line options. The former overrides all the |
defined on your system. Common names are auth, authpriv, cron, daemon, | log-file parameters of the daemon and all module settings. The latter sets |
ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, | the daemon's log file and the default for all the modules, which still |
local1, local2, local3, local4, local5, local6 and local7. The default | allows modules to override the default setting. |
is daemon. This setting has no effect if the \(dq\&log file\(dq\& setting is a | .IP "\fBsyslog\ facility\fP" |
non\-empty string (either set in the per\-modules settings, or inherited | This parameter allows you to specify the syslog facility name to use when |
from the global settings). | logging messages from the rsync daemon. You may use any standard syslog |
.IP | facility name which is defined on your system. Common names are auth, |
.IP "\fBmax verbosity\fP" | authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, |
This parameter allows you to control | uucp, local0, local1, local2, local3, local4, local5, local6 and local7. |
the maximum amount of verbose information that you\(cq\&ll allow the daemon to | The default is daemon. This setting has no effect if the "log file" |
generate (since the information goes into the log file). The default is 1, | setting is a non-empty string (either set in the per-modules settings, or |
which allows the client to request one level of verbosity. | inherited from the global settings). |
.IP | .IP "\fBsyslog\ tag\fP" |
.IP "\fBlock file\fP" | This parameter allows you to specify the syslog tag to use when logging |
This parameter specifies the file to use to | messages from the rsync daemon. The default is "rsyncd". This setting has |
support the \(dq\&max connections\(dq\& parameter. The rsync daemon uses record | no effect if the "log file" setting is a non-empty string (either set in |
locking on this file to ensure that the max connections limit is not | the per-modules settings, or inherited from the global settings). |
exceeded for the modules sharing the lock file. | .IP |
The default is \f(CW/var/run/rsyncd.lock\fP. | For example, if you wanted each authenticated user's name to be included in |
.IP | the syslog tag, you could do something like this: |
.IP "\fBread only\fP" | .RS 4 |
This parameter determines whether clients | .IP |
will be able to upload files or not. If \(dq\&read only\(dq\& is true then any | .nf |
attempted uploads will fail. If \(dq\&read only\(dq\& is false then uploads will | syslog tag = rsyncd.%RSYNC_USER_NAME% |
be possible if file permissions on the daemon side allow them. The default | .fi |
is for all modules to be read only. | .RE |
.IP | .IP "\fBmax\ verbosity\fP" |
Note that \(dq\&auth users\(dq\& can override this setting on a per\-user basis. | This parameter allows you to control the maximum amount of verbose |
.IP | information that you'll allow the daemon to generate (since the information |
.IP "\fBwrite only\fP" | goes into the log file). The default is 1, which allows the client to |
This parameter determines whether clients | request one level of verbosity. |
will be able to download files or not. If \(dq\&write only\(dq\& is true then any | .IP |
attempted downloads will fail. If \(dq\&write only\(dq\& is false then downloads | This also affects the user's ability to request higher levels of \fB\-\-info\fP |
will be possible if file permissions on the daemon side allow them. The | and \fB\-\-debug\fP logging. If the max value is 2, then no info and/or debug |
default is for this parameter to be disabled. | value that is higher than what would be set by \fB\-vv\fP will be honored by the |
.IP | daemon in its logging. To see how high of a verbosity level you need to |
| accept for a particular info/debug level, refer to \fBrsync\ \-\-info=help\fP and |
| \fBrsync\ \-\-debug=help\fP. For instance, it takes max-verbosity 4 to be able to |
| output debug TIME2 and FLIST3. |
| .IP "\fBlock\ file\fP" |
| This parameter specifies the file to use to support the "max connections" |
| parameter. The rsync daemon uses record locking on this file to ensure that |
| the max connections limit is not exceeded for the modules sharing the lock |
| file. The default is \fB/var/run/rsyncd.lock\fP. |
| .IP "\fBchecksum\ files\fP" |
| This parameter tells rsync to make use of any cached checksum information |
| it finds in per-directory .rsyncsums files when the current transfer is |
| using the \fB\-\-checksum\fP option. The value can be set to either "lax", |
| "strict", "+lax", "+strict", "++lax", "++strict", or +"none". See the |
| client's \fB\-\-sumfiles\fP option for what these choices do. |
| .IP |
| Note also that the client's command-line option, \fB\-\-sumfiles\fP, has no |
| effect on a daemon. A daemon will only access checksum files if this |
| config option tells it to. You can configure updating of the .rsyncsums |
| files even if the module itself is configured to be read-only. See also |
| the \fBexclude\fP directive for a way to hide the .rsyncsums files from the |
| user. |
| .IP "\fBread\ only\fP" |
| This parameter determines whether clients will be able to upload files or |
| not. If "read only" is true then any attempted uploads will fail. If |
| "read only" is false then uploads will be possible if file permissions on |
| the daemon side allow them. The default is for all modules to be read only. |
| .IP |
| Note that "auth users" can override this setting on a per-user basis. |
| .IP "\fBwrite\ only\fP" |
| This parameter determines whether clients will be able to download files or |
| not. If "write only" is true then any attempted downloads will fail. If |
| "write only" is false then downloads will be possible if file permissions |
| on the daemon side allow them. The default is for this parameter to be |
| disabled. |
| .IP |
| Helpful hint: you probably want to specify "refuse options = delete" for a |
| write-only module. |
| .IP "\fBopen\ noatime\fP" |
| When set to True, this parameter tells the rsync daemon to open files with |
| the O_NOATIME flag |
| (on systems that support it) to avoid changing the access time of the files |
| that are being transferred. If your OS does not support the O_NOATIME flag |
| then rsync will silently ignore this option. Note also that some |
| filesystems are mounted to avoid updating the atime on read access even |
| without the O_NOATIME flag being set. |
| .IP |
| When set to False, this parameters ensures that files on the server are not |
| opened with O_NOATIME. |
| .IP |
| When set to Unset (the default) the user controls the setting via |
| \fB\-\-open-noatime\fP. |
.IP "\fBlist\fP" |
.IP "\fBlist\fP" |
This parameter determines whether this module is | This parameter determines whether this module is listed when the client |
listed when the client asks for a listing of available modules. In addition, | asks for a listing of available modules. In addition, if this is false, |
if this is false, the daemon will pretend the module does not exist | the daemon will pretend the module does not exist when a client denied by |
when a client denied by \(dq\&hosts allow\(dq\& or \(dq\&hosts deny\(dq\& attempts to access it. | "hosts allow" or "hosts deny" attempts to access it. Realize that if |
Realize that if \(dq\&reverse lookup\(dq\& is disabled globally but enabled for the | "reverse lookup" is disabled globally but enabled for the module, the |
module, the resulting reverse lookup to a potentially client\-controlled DNS | resulting reverse lookup to a potentially client-controlled DNS server may |
server may still reveal to the client that it hit an existing module. | still reveal to the client that it hit an existing module. The default is |
The default is for modules to be listable. | for modules to be listable. |
.IP | |
.IP "\fBuid\fP" |
.IP "\fBuid\fP" |
This parameter specifies the user name or user ID that | This parameter specifies the user name or user ID that file transfers to |
file transfers to and from that module should take place as when the daemon | and from that module should take place as when the daemon was run as root. |
was run as root. In combination with the \(dq\&gid\(dq\& parameter this determines what | In combination with the "gid" parameter this determines what file |
file permissions are available. The default when run by a super\-user is to | permissions are available. The default when run by a super-user is to |
switch to the system\(cq\&s \(dq\&nobody\(dq\& user. The default for a non\-super\-user is to | switch to the system's "nobody" user. The default for a non-super-user is |
not try to change the user. See also the \(dq\&gid\(dq\& parameter. | to not try to change the user. See also the "gid" parameter. |
.IP | .IP |
The RSYNC_USER_NAME environment variable may be used to request that rsync run | The RSYNC_USER_NAME environment variable may be used to request that rsync |
as the authorizing user. For example, if you want a rsync to run as the same | run as the authorizing user. For example, if you want a rsync to run as |
user that was received for the rsync authentication, this setup is useful: | the same user that was received for the rsync authentication, this setup is |
.IP | useful: |
.nf | .RS 4 |
uid = %RSYNC_USER_NAME% | .IP |
gid = * | .nf |
.fi | uid = %RSYNC_USER_NAME% |
| gid = * |
.IP | .fi |
| .RE |
.IP "\fBgid\fP" |
.IP "\fBgid\fP" |
This parameter specifies one or more group names/IDs that will be | This parameter specifies one or more group names/IDs that will be used when |
used when accessing the module. The first one will be the default group, and | accessing the module. The first one will be the default group, and any |
any extra ones be set as supplemental groups. You may also specify a \(dq\&*\(dq\& as | extra ones be set as supplemental groups. You may also specify a "\fB*\fP" as |
the first gid in the list, which will be replaced by all the normal groups for | the first gid in the list, which will be replaced by all the normal groups |
the transfer\(cq\&s user (see \(dq\&uid\(dq\&). The default when run by a super\-user is to | for the transfer's user (see "uid"). The default when run by a super-user |
switch to your OS\(cq\&s \(dq\&nobody\(dq\& (or perhaps \(dq\&nogroup\(dq\&) group with no other | is to switch to your OS's "nobody" (or perhaps "nogroup") group with no |
supplementary groups. The default for a non\-super\-user is to not change any | other supplementary groups. The default for a non-super-user is to not |
group attributes (and indeed, your OS may not allow a non\-super\-user to try to | change any group attributes (and indeed, your OS may not allow a |
change their group settings). | non-super-user to try to change their group settings). |
.IP | .IP |
.IP "\fBfake super\fP" | The specified list is normally split into tokens based on spaces and |
Setting \(dq\&fake super = yes\(dq\& for a module causes the | commas. However, if the list starts with a comma, then the list is only |
daemon side to behave as if the \fB\-\-fake\-super\fP command\-line option had | split on commas, which allows a group name to contain a space. In either |
been specified. This allows the full attributes of a file to be stored | case any leading and/or trailing whitespace is removed from the tokens and |
without having to have the daemon actually running as root. | empty tokens are ignored. |
.IP | .IP "\fBdaemon\ uid\fP" |
| This parameter specifies a uid under which the daemon will run. The daemon |
| usually runs as user root, and when this is left unset the user is left |
| unchanged. See also the "uid" parameter. |
| .IP "\fBdaemon\ gid\fP" |
| This parameter specifies a gid under which the daemon will run. The daemon |
| usually runs as group root, and when this is left unset, the group is left |
| unchanged. See also the "gid" parameter. |
| .IP "\fBfake\ super\fP" |
| Setting "fake super = yes" for a module causes the daemon side to behave as |
| if the \fB\-\-fake-super\fP command-line option had been specified. This allows |
| the full attributes of a file to be stored without having to have the |
| daemon actually running as root. |
.IP "\fBfilter\fP" |
.IP "\fBfilter\fP" |
The daemon has its own filter chain that determines what files | The daemon has its own filter chain that determines what files it will let |
it will let the client access. This chain is not sent to the client and is | the client access. This chain is not sent to the client and is independent |
independent of any filters the client may have specified. Files excluded by | of any filters the client may have specified. Files excluded by the daemon |
the daemon filter chain (\fBdaemon\-excluded\fP files) are treated as non\-existent | filter chain (\fBdaemon-excluded\fP files) are treated as non-existent if the |
if the client tries to pull them, are skipped with an error message if the | client tries to pull them, are skipped with an error message if the client |
client tries to push them (triggering exit code 23), and are never deleted from | tries to push them (triggering exit code 23), and are never deleted from |
the module. You can use daemon filters to prevent clients from downloading or | the module. You can use daemon filters to prevent clients from downloading |
tampering with private administrative files, such as files you may add to | or tampering with private administrative files, such as files you may add |
support uid/gid name translations. | to support uid/gid name translations. |
.IP | .IP |
The daemon filter chain is built from the \(dq\&filter\(dq\&, \(dq\&include from\(dq\&, \(dq\&include\(dq\&, | The daemon filter chain is built from the "filter", "include from", |
\(dq\&exclude from\(dq\&, and \(dq\&exclude\(dq\& parameters, in that order of priority. Anchored | "include", "exclude from", and "exclude" parameters, in that order of |
patterns are anchored at the root of the module. To prevent access to an | priority. Anchored patterns are anchored at the root of the module. To |
entire subtree, for example, \(dq\&/secret\(dq\&, you \fImust\fP exclude everything in the | prevent access to an entire subtree, for example, "\fB/secret\fP", you \fBmust\fP |
subtree; the easiest way to do this is with a triple\-star pattern like | exclude everything in the subtree; the easiest way to do this is with a |
\(dq\&/secret/***\(dq\&. | triple-star pattern like "\fB/secret/***\fP". |
.IP | .IP |
The \(dq\&filter\(dq\& parameter takes a space\-separated list of daemon filter rules, | The "filter" parameter takes a space-separated list of daemon filter rules, |
though it is smart enough to know not to split a token at an internal space in | though it is smart enough to know not to split a token at an internal space |
a rule (e.g. \(dq\&\- /foo \- /bar\(dq\& is parsed as two rules). You may specify one or | in a rule (e.g. "\fB\-\ /foo\ \-\ /bar\fP" is parsed as two rules). You may specify |
more merge\-file rules using the normal syntax. Only one \(dq\&filter\(dq\& parameter can | one or more merge-file rules using the normal syntax. Only one "filter" |
apply to a given module in the config file, so put all the rules you want in a | parameter can apply to a given module in the config file, so put all the |
single parameter. Note that per\-directory merge\-file rules do not provide as | rules you want in a single parameter. Note that per-directory merge-file |
much protection as global rules, but they can be used to make \fB\-\-delete\fP work | rules do not provide as much protection as global rules, but they can be |
better during a client download operation if the per\-dir merge files are | used to make \fB\-\-delete\fP work better during a client download operation if |
included in the transfer and the client requests that they be used. | the per-dir merge files are included in the transfer and the client |
.IP | requests that they be used. |
.IP "\fBexclude\fP" |
.IP "\fBexclude\fP" |
This parameter takes a space\-separated list of daemon | This parameter takes a space-separated list of daemon exclude patterns. As |
exclude patterns. As with the client \fB\-\-exclude\fP option, patterns can be | with the client \fB\-\-exclude\fP option, patterns can be qualified with "\fB\-\fP" or |
qualified with \(dq\&\- \(dq\& or \(dq\&+ \(dq\& to explicitly indicate exclude/include. Only one | "\fB+\fP" to explicitly indicate exclude/include. Only one "exclude" parameter |
\(dq\&exclude\(dq\& parameter can apply to a given module. See the \(dq\&filter\(dq\& parameter | can apply to a given module. See the "filter" parameter for a description |
for a description of how excluded files affect the daemon. | of how excluded files affect the daemon. |
.IP | |
.IP "\fBinclude\fP" |
.IP "\fBinclude\fP" |
Use an \(dq\&include\(dq\& to override the effects of the \(dq\&exclude\(dq\& | Use an "include" to override the effects of the "exclude" parameter. Only |
parameter. Only one \(dq\&include\(dq\& parameter can apply to a given module. See the | one "include" parameter can apply to a given module. See the "filter" |
\(dq\&filter\(dq\& parameter for a description of how excluded files affect the daemon. | parameter for a description of how excluded files affect the daemon. |
.IP | .IP "\fBexclude\ from\fP" |
.IP "\fBexclude from\fP" | This parameter specifies the name of a file on the daemon that contains |
This parameter specifies the name of a file | daemon exclude patterns, one per line. Only one "exclude from" parameter |
on the daemon that contains daemon exclude patterns, one per line. Only one | can apply to a given module; if you have multiple exclude-from files, you |
\(dq\&exclude from\(dq\& parameter can apply to a given module; if you have multiple | can specify them as a merge file in the "filter" parameter. See the |
exclude\-from files, you can specify them as a merge file in the \(dq\&filter\(dq\& | "filter" parameter for a description of how excluded files affect the |
parameter. See the \(dq\&filter\(dq\& parameter for a description of how excluded files | |
affect the daemon. | |
.IP | |
.IP "\fBinclude from\fP" | |
Analogue of \(dq\&exclude from\(dq\& for a file of daemon include | |
patterns. Only one \(dq\&include from\(dq\& parameter can apply to a given module. See | |
the \(dq\&filter\(dq\& parameter for a description of how excluded files affect the | |
daemon. |
daemon. |
.IP | .IP "\fBinclude\ from\fP" |
.IP "\fBincoming chmod\fP" | Analogue of "exclude from" for a file of daemon include patterns. Only one |
This parameter allows you to specify a set of | "include from" parameter can apply to a given module. See the "filter" |
comma\-separated chmod strings that will affect the permissions of all | parameter for a description of how excluded files affect the daemon. |
incoming files (files that are being received by the daemon). These | .IP "\fBincoming\ chmod\fP" |
changes happen after all other permission calculations, and this will | This parameter allows you to specify a set of comma-separated chmod strings |
even override destination\-default and/or existing permissions when the | that will affect the permissions of all incoming files (files that are |
client does not specify \fB\-\-perms\fP. | being received by the daemon). These changes happen after all other |
| permission calculations, and this will even override destination-default |
| and/or existing permissions when the client does not specify \fB\-\-perms\fP. |
See the description of the \fB\-\-chmod\fP rsync option and the \fBchmod\fP(1) |
See the description of the \fB\-\-chmod\fP rsync option and the \fBchmod\fP(1) |
manpage for information on the format of this string. |
manpage for information on the format of this string. |
.IP | .IP "\fBoutgoing\ chmod\fP" |
.IP "\fBoutgoing chmod\fP" | This parameter allows you to specify a set of comma-separated chmod strings |
This parameter allows you to specify a set of | that will affect the permissions of all outgoing files (files that are |
comma\-separated chmod strings that will affect the permissions of all | being sent out from the daemon). These changes happen first, making the |
outgoing files (files that are being sent out from the daemon). These | sent permissions appear to be different than those stored in the filesystem |
changes happen first, making the sent permissions appear to be different | itself. For instance, you could disable group write permissions on the |
than those stored in the filesystem itself. For instance, you could | server while having it appear to be on to the clients. See the description |
disable group write permissions on the server while having it appear to | of the \fB\-\-chmod\fP rsync option and the \fBchmod\fP(1) manpage for information |
be on to the clients. | on the format of this string. |
See the description of the \fB\-\-chmod\fP rsync option and the \fBchmod\fP(1) | .IP "\fBauth\ users\fP" |
manpage for information on the format of this string. | This parameter specifies a comma and/or space-separated list of |
.IP | authorization rules. In its simplest form, you list the usernames that |
.IP "\fBauth users\fP" | will be allowed to connect to this module. The usernames do not need to |
This parameter specifies a comma and/or space\-separated | exist on the local system. The rules may contain shell wildcard characters |
list of authorization rules. In its simplest form, you list the usernames | that will be matched against the username provided by the client for |
that will be allowed to connect to | authentication. If "auth users" is set then the client will be challenged |
this module. The usernames do not need to exist on the local | to supply a username and password to connect to the module. A challenge |
system. The rules may contain shell wildcard characters that will be matched | response authentication protocol is used for this exchange. The plain text |
against the username provided by the client for authentication. If | |
\(dq\&auth users\(dq\& is set then the client will be challenged to supply a | |
username and password to connect to the module. A challenge response | |
authentication protocol is used for this exchange. The plain text | |
usernames and passwords are stored in the file specified by the |
usernames and passwords are stored in the file specified by the |
\(dq\&secrets file\(dq\& parameter. The default is for all users to be able to | "secrets file" parameter. The default is for all users to be able to |
connect without a password (this is called \(dq\&anonymous rsync\(dq\&). | connect without a password (this is called "anonymous rsync"). |
.IP | .IP |
In addition to username matching, you can specify groupname matching via a \(cq\&@\(cq\& | In addition to username matching, you can specify groupname matching via a |
prefix. When using groupname matching, the authenticating username must be a | \&'@' prefix. When using groupname matching, the authenticating username |
real user on the system, or it will be assumed to be a member of no groups. | must be a real user on the system, or it will be assumed to be a member of |
For example, specifying \(dq\&@rsync\(dq\& will match the authenticating user if the | no groups. For example, specifying "@rsync" will match the authenticating |
named user is a member of the rsync group. | user if the named user is a member of the rsync group. |
.IP | .IP |
Finally, options may be specified after a colon (:). The options allow you to | Finally, options may be specified after a colon (:). The options allow you |
\(dq\&deny\(dq\& a user or a group, set the access to \(dq\&ro\(dq\& (read\-only), or set the access | to "deny" a user or a group, set the access to "ro" (read-only), or set the |
to \(dq\&rw\(dq\& (read/write). Setting an auth\-rule\-specific ro/rw setting overrides | access to "rw" (read/write). Setting an auth-rule-specific ro/rw setting |
the module\(cq\&s \(dq\&read only\(dq\& setting. | overrides the module's "read only" setting. |
.IP | .IP |
Be sure to put the rules in the order you want them to be matched, because the | Be sure to put the rules in the order you want them to be matched, because |
checking stops at the first matching user or group, and that is the only auth | the checking stops at the first matching user or group, and that is the |
that is checked. For example: | only auth that is checked. For example: |
.IP | .RS 4 |
.nf | .IP |
auth users = joe:deny @guest:deny admin:rw @rsync:ro susan joe sam | .nf |
.fi | auth users = joe:deny @guest:deny admin:rw @rsync:ro susan joe sam |
| .fi |
.IP | .RE |
| .IP |
In the above rule, user joe will be denied access no matter what. Any user |
In the above rule, user joe will be denied access no matter what. Any user |
that is in the group \(dq\&guest\(dq\& is also denied access. The user \(dq\&admin\(dq\& gets | that is in the group "guest" is also denied access. The user "admin" gets |
access in read/write mode, but only if the admin user is not in group \(dq\&guest\(dq\& | access in read/write mode, but only if the admin user is not in group |
(because the admin user\-matching rule would never be reached if the user is in | "guest" (because the admin user-matching rule would never be reached if the |
group \(dq\&guest\(dq\&). Any other user who is in group \(dq\&rsync\(dq\& will get read\-only | user is in group "guest"). Any other user who is in group "rsync" will get |
access. Finally, users susan, joe, and sam get the ro/rw setting of the | read-only access. Finally, users susan, joe, and sam get the ro/rw setting |
module, but only if the user didn\(cq\&t match an earlier group\-matching rule. | of the module, but only if the user didn't match an earlier group-matching |
.IP | rule. |
See the description of the secrets file for how you can have per\-user passwords | .IP |
as well as per\-group passwords. It also explains how a user can authenticate | If you need to specify a user or group name with a space in it, start your |
using their user password or (when applicable) a group password, depending on | list with a comma to indicate that the list should only be split on commas |
what rule is being authenticated. | (though leading and trailing whitespace will also be removed, and empty |
.IP | entries are just ignored). For example: |
See also the section entitled \(dq\&USING RSYNC\-DAEMON FEATURES VIA A REMOTE | .RS 4 |
SHELL CONNECTION\(dq\& in \fBrsync\fP(1) for information on how handle an | .IP |
rsyncd.conf\-level username that differs from the remote\-shell\-level | .nf |
| auth users = , joe:deny, @Some Group:deny, admin:rw, @RO Group:ro |
| .fi |
| .RE |
| .IP |
| See the description of the secrets file for how you can have per-user |
| passwords as well as per-group passwords. It also explains how a user can |
| authenticate using their user password or (when applicable) a group |
| password, depending on what rule is being authenticated. |
| .IP |
| See also the section entitled "USING RSYNC-DAEMON FEATURES VIA A REMOTE |
| SHELL CONNECTION" in \fBrsync\fP(1) for information on how handle an |
| rsyncd.conf-level username that differs from the remote-shell-level |
username when using a remote shell to connect to an rsync daemon. |
username when using a remote shell to connect to an rsync daemon. |
.IP | .IP "\fBsecrets\ file\fP" |
.IP "\fBsecrets file\fP" | This parameter specifies the name of a file that contains the |
This parameter specifies the name of a file that contains | username:password and/or @groupname:password pairs used for authenticating |
the username:password and/or @groupname:password pairs used for authenticating | this module. This file is only consulted if the "auth users" parameter is |
this module. This file is only consulted if the \(dq\&auth users\(dq\& parameter is | specified. The file is line-based and contains one name:password pair per |
specified. The file is line\-based and contains one name:password pair per | |
line. Any line has a hash (#) as the very first character on the line is |
line. Any line has a hash (#) as the very first character on the line is |
considered a comment and is skipped. The passwords can contain any characters | considered a comment and is skipped. The passwords can contain any |
but be warned that many operating systems limit the length of passwords that | characters but be warned that many operating systems limit the length of |
can be typed at the client end, so you may find that passwords longer than 8 | passwords that can be typed at the client end, so you may find that |
characters don\(cq\&t work. | passwords longer than 8 characters don't work. |
.IP | .IP |
The use of group\-specific lines are only relevant when the module is being | The use of group-specific lines are only relevant when the module is being |
authorized using a matching \(dq\&@groupname\(dq\& rule. When that happens, the user | authorized using a matching "@groupname" rule. When that happens, the user |
can be authorized via either their \(dq\&username:password\(dq\& line or the | can be authorized via either their "username:password" line or the |
\(dq\&@groupname:password\(dq\& line for the group that triggered the authentication. | "@groupname:password" line for the group that triggered the authentication. |
.IP | .IP |
It is up to you what kind of password entries you want to include, either |
It is up to you what kind of password entries you want to include, either |
users, groups, or both. The use of group rules in \(dq\&auth users\(dq\& does not | users, groups, or both. The use of group rules in "auth users" does not |
require that you specify a group password if you do not want to use shared |
require that you specify a group password if you do not want to use shared |
passwords. |
passwords. |
.IP | .IP |
There is no default for the \(dq\&secrets file\(dq\& parameter, you must choose a name | There is no default for the "secrets file" parameter, you must choose a |
(such as \f(CW/etc/rsyncd.secrets\fP). The file must normally not be readable | name (such as \fB/etc/rsyncd.secrets\fP). The file must normally not be |
by \(dq\&other\(dq\&; see \(dq\&strict modes\(dq\&. If the file is not found or is rejected, no | readable by "other"; see "strict modes". If the file is not found or is |
logins for a \(dq\&user auth\(dq\& module will be possible. | rejected, no logins for a "user auth" module will be possible. |
.IP | .IP "\fBstrict\ modes\fP" |
.IP "\fBstrict modes\fP" | This parameter determines whether or not the permissions on the secrets |
This parameter determines whether or not | file will be checked. If "strict modes" is true, then the secrets file |
the permissions on the secrets file will be checked. If \(dq\&strict modes\(dq\& is | must not be readable by any user ID other than the one that the rsync |
true, then the secrets file must not be readable by any user ID other | daemon is running under. If "strict modes" is false, the check is not |
than the one that the rsync daemon is running under. If \(dq\&strict modes\(dq\& is | performed. The default is true. This parameter was added to accommodate |
false, the check is not performed. The default is true. This parameter | rsync running on the Windows operating system. |
was added to accommodate rsync running on the Windows operating system. | .IP "\fBhosts\ allow\fP" |
.IP | This parameter allows you to specify a list of comma- and/or |
.IP "\fBhosts allow\fP" | whitespace-separated patterns that are matched against a connecting |
This parameter allows you to specify a | client's hostname and IP address. If none of the patterns match, then the |
list of patterns that are matched against a connecting clients | |
hostname and IP address. If none of the patterns match then the | |
connection is rejected. |
connection is rejected. |
.IP | .IP |
Each pattern can be in one of five forms: | Each pattern can be in one of six forms: |
.IP | .IP |
.RS | .RS |
.IP o | .IP o |
a dotted decimal IPv4 address of the form a.b.c.d, or an IPv6 address | a dotted decimal IPv4 address of the form a.b.c.d, or an IPv6 address of |
of the form a:b:c::d:e:f. In this case the incoming machine\(cq\&s IP address | the form a:b:c::d:e:f. In this case the incoming machine's IP address |
must match exactly. |
must match exactly. |
.IP o | .IP o |
an address/mask in the form ipaddr/n where ipaddr is the IP address | an address/mask in the form ipaddr/n where ipaddr is the IP address and n |
and n is the number of one bits in the netmask. All IP addresses which | is the number of one bits in the netmask. All IP addresses which match |
match the masked IP address will be allowed in. | the masked IP address will be allowed in. |
.IP o | .IP o |
an address/mask in the form ipaddr/maskaddr where ipaddr is the | an address/mask in the form ipaddr/maskaddr where ipaddr is the IP |
IP address and maskaddr is the netmask in dotted decimal notation for IPv4, | address and maskaddr is the netmask in dotted decimal notation for IPv4, |
or similar for IPv6, e.g. ffff:ffff:ffff:ffff:: instead of /64. All IP |
or similar for IPv6, e.g. ffff:ffff:ffff:ffff:: instead of /64. All IP |
addresses which match the masked IP address will be allowed in. |
addresses which match the masked IP address will be allowed in. |
.IP o | .IP o |
a hostname pattern using wildcards. If the hostname of the connecting IP |
a hostname pattern using wildcards. If the hostname of the connecting IP |
(as determined by a reverse lookup) matches the wildcarded name (using the | (as determined by a reverse lookup) matches the wildcarded name (using |
same rules as normal unix filename matching), the client is allowed in. This | the same rules as normal unix filename matching), the client is allowed |
only works if \(dq\&reverse lookup\(dq\& is enabled (the default). | in. This only works if "reverse lookup" is enabled (the default). |
.IP o | .IP o |
a hostname. A plain hostname is matched against the reverse DNS of the |
a hostname. A plain hostname is matched against the reverse DNS of the |
connecting IP (if \(dq\&reverse lookup\(dq\& is enabled), and/or the IP of the given | connecting IP (if "reverse lookup" is enabled), and/or the IP of the |
hostname is matched against the connecting IP (if \(dq\&forward lookup\(dq\& is | given hostname is matched against the connecting IP (if "forward lookup" |
enabled, as it is by default). Any match will be allowed in. | is enabled, as it is by default). Any match will be allowed in. |
| .IP o |
| an '@' followed by a netgroup name, which will match if the reverse DNS |
| of the connecting IP is in the specified netgroup. |
.RE |
.RE |
| .IP |
.IP | Note IPv6 link-local addresses can have a scope in the address |
Note IPv6 link\-local addresses can have a scope in the address specification: | specification: |
.IP | .RS 4 |
.RS | .IP |
\f(CW fe80::1%link1\fP | .nf |
.br | fe80::1%link1 |
\f(CW fe80::%link1/64\fP | fe80::%link1/64 |
.br | fe80::%link1/ffff:ffff:ffff:ffff:: |
\f(CW fe80::%link1/ffff:ffff:ffff:ffff::\fP | .fi |
.br | |
.RE |
.RE |
| .IP |
.IP | You can also combine "hosts allow" with "hosts deny" as a way to add |
You can also combine \(dq\&hosts allow\(dq\& with a separate \(dq\&hosts deny\(dq\& | exceptions to your deny list. When both parameters are specified, the |
parameter. If both parameters are specified then the \(dq\&hosts allow\(dq\& parameter is | "hosts allow" parameter is checked first and a match results in the client |
checked first and a match results in the client being able to | being able to connect. A non-allowed host is then matched against the |
connect. The \(dq\&hosts deny\(dq\& parameter is then checked and a match means | "hosts deny" list to see if it should be rejected. A host that does not |
that the host is rejected. If the host does not match either the | match either list is allowed to connect. |
\(dq\&hosts allow\(dq\& or the \(dq\&hosts deny\(dq\& patterns then it is allowed to | .IP |
| The default is no "hosts allow" parameter, which means all hosts can |
connect. |
connect. |
.IP | .IP "\fBhosts\ deny\fP" |
The default is no \(dq\&hosts allow\(dq\& parameter, which means all hosts can connect. | This parameter allows you to specify a list of comma- and/or |
.IP | whitespace-separated patterns that are matched against a connecting clients |
.IP "\fBhosts deny\fP" | |
This parameter allows you to specify a | |
list of patterns that are matched against a connecting clients | |
hostname and IP address. If the pattern matches then the connection is |
hostname and IP address. If the pattern matches then the connection is |
rejected. See the \(dq\&hosts allow\(dq\& parameter for more information. | rejected. See the "hosts allow" parameter for more information. |
.IP | .IP |
The default is no \(dq\&hosts deny\(dq\& parameter, which means all hosts can connect. | The default is no "hosts deny" parameter, which means all hosts can |
.IP | connect. |
.IP "\fBreverse lookup\fP" | .IP "\fBreverse\ lookup\fP" |
Controls whether the daemon performs a reverse lookup | Controls whether the daemon performs a reverse lookup on the client's IP |
on the client\(cq\&s IP address to determine its hostname, which is used for | address to determine its hostname, which is used for "hosts allow" & |
\(dq\&hosts allow\(dq\&/\(dq\&hosts deny\(dq\& checks and the \(dq\&%h\(dq\& log escape. This is enabled by | "hosts deny" checks and the "%h" log escape. This is enabled by default, |
default, but you may wish to disable it to save time if you know the lookup will | but you may wish to disable it to save time if you know the lookup will not |
not return a useful result, in which case the daemon will use the name | return a useful result, in which case the daemon will use the name |
\(dq\&UNDETERMINED\(dq\& instead. | "UNDETERMINED" instead. |
.IP | .IP |
If this parameter is enabled globally (even by default), rsync performs the |
If this parameter is enabled globally (even by default), rsync performs the |
lookup as soon as a client connects, so disabling it for a module will not |
lookup as soon as a client connects, so disabling it for a module will not |
avoid the lookup. Thus, you probably want to disable it globally and then |
avoid the lookup. Thus, you probably want to disable it globally and then |
enable it for modules that need the information. |
enable it for modules that need the information. |
.IP | .IP "\fBforward\ lookup\fP" |
.IP "\fBforward lookup\fP" | Controls whether the daemon performs a forward lookup on any hostname |
Controls whether the daemon performs a forward lookup | specified in an hosts allow/deny setting. By default this is enabled, |
on any hostname specified in an hosts allow/deny setting. By default this is | allowing the use of an explicit hostname that would not be returned by |
enabled, allowing the use of an explicit hostname that would not be returned | reverse DNS of the connecting IP. |
by reverse DNS of the connecting IP. | .IP "\fBignore\ errors\fP" |
.IP | This parameter tells rsyncd to ignore I/O errors on the daemon when |
.IP "\fBignore errors\fP" | deciding whether to run the delete phase of the transfer. Normally rsync |
This parameter tells rsyncd to | skips the \fB\-\-delete\fP step if any I/O errors have occurred in order to |
ignore I/O errors on the daemon when deciding whether to run the delete | prevent disastrous deletion due to a temporary resource shortage or other |
phase of the transfer. Normally rsync skips the \fB\-\-delete\fP step if any | I/O error. In some cases this test is counter productive so you can use |
I/O errors have occurred in order to prevent disastrous deletion due | this parameter to turn off this behavior. |
to a temporary resource shortage or other I/O error. In some cases this | .IP "\fBignore\ nonreadable\fP" |
test is counter productive so you can use this parameter to turn off this | This tells the rsync daemon to completely ignore files that are not |
behavior. | readable by the user. This is useful for public archives that may have some |
.IP | non-readable files among the directories, and the sysadmin doesn't want |
.IP "\fBignore nonreadable\fP" | those files to be seen at all. |
This tells the rsync daemon to completely | .IP "\fBtransfer\ logging\fP" |
ignore files that are not readable by the user. This is useful for | This parameter enables per-file logging of downloads and uploads in a |
public archives that may have some non\-readable files among the | format somewhat similar to that used by ftp daemons. The daemon always |
directories, and the sysadmin doesn\(cq\&t want those files to be seen at all. | logs the transfer at the end, so if a transfer is aborted, no mention will |
.IP | be made in the log file. |
.IP "\fBtransfer logging\fP" | .IP |
This parameter enables per\-file | If you want to customize the log lines, see the "log format" parameter. |
logging of downloads and uploads in a format somewhat similar to that | .IP "\fBlog\ format\fP" |
used by ftp daemons. The daemon always logs the transfer at the end, so | This parameter allows you to specify the format used for logging file |
if a transfer is aborted, no mention will be made in the log file. | transfers when transfer logging is enabled. The format is a text string |
.IP | containing embedded single-character escape sequences prefixed with a |
If you want to customize the log lines, see the \(dq\&log format\(dq\& parameter. | percent (%) character. An optional numeric field width may also be |
.IP | specified between the percent and the escape letter (e.g. |
.IP "\fBlog format\fP" | "\fB%\-50n\ %8l\ %07p\fP"). In addition, one or more apostrophes may be specified |
This parameter allows you to specify the | prior to a numerical escape to indicate that the numerical value should be |
format used for logging file transfers when transfer logging is enabled. | made more human-readable. The 3 supported levels are the same as for the |
The format is a text string containing embedded single\-character escape | \fB\-\-human-readable\fP command-line option, though the default is for |
sequences prefixed with a percent (%) character. An optional numeric | human-readability to be off. Each added apostrophe increases the level |
field width may also be specified between the percent and the escape | (e.g. "\fB%''l\ %'b\ %f\fP"). |
letter (e.g. \(dq\&\fB%\-50n %8l %07p\fP\(dq\&). | .IP |
In addition, one or more apostrophes may be specified prior to a numerical | The default log format is "\fB%o\ %h\ [%a]\ %m\ (%u)\ %f\ %l\fP", and a "\fB%t\ [%p]\fP" |
escape to indicate that the numerical value should be made more human\-readable. | is always prefixed when using the "log file" parameter. (A perl script |
The 3 supported levels are the same as for the \fB\-\-human\-readable\fP | that will summarize this default log format is included in the rsync source |
command\-line option, though the default is for human\-readability to be off. | code distribution in the "support" subdirectory: rsyncstats.) |
Each added apostrophe increases the level (e.g. \(dq\&\fB%'\&'\&l %'\&b %f\fP\(dq\&). | .IP |
.IP | The single-character escapes that are understood are as follows: |
The default log format is \(dq\&%o %h [%a] %m (%u) %f %l\(dq\&, and a \(dq\&%t [%p] \(dq\& | .IP |
is always prefixed when using the \(dq\&log file\(dq\& parameter. | .RS |
(A perl script that will summarize this default log format is included | .IP o |
in the rsync source code distribution in the \(dq\&support\(dq\& subdirectory: | |
rsyncstats.) | |
.IP | |
The single\-character escapes that are understood are as follows: | |
.IP | |
.RS | |
.IP o | |
%a the remote IP address (only available for a daemon) |
%a the remote IP address (only available for a daemon) |
.IP o | .IP o |
%b the number of bytes actually transferred |
%b the number of bytes actually transferred |
.IP o | .IP o |
%B the permission bits of the file (e.g. rwxrwxrwt) |
%B the permission bits of the file (e.g. rwxrwxrwt) |
.IP o | .IP o |
%c the total size of the block checksums received for the basis file (only when sending) | %c the total size of the block checksums received for the basis file |
.IP o | (only when sending) |
%C the full\-file MD5 checksum if \fB\-\-checksum\fP is enabled or a file was transferred (only for protocol 30 or above). | .IP o |
.IP o | %C the full-file checksum if it is known for the file. For older rsync |
%f the filename (long form on sender; no trailing \(dq\&/\(dq\&) | protocols/versions, the checksum was salted, and is thus not a useful |
.IP o | value (and is not displayed when that is the case). For the checksum to |
%G the gid of the file (decimal) or \(dq\&DEFAULT\(dq\& | output for a file, either the \fB\-\-checksum\fP option must be in-effect or |
.IP o | the file must have been transferred without a salted checksum being used. |
| See the \fB\-\-checksum-choice\fP option for a way to choose the algorithm. |
| .IP o |
| %f the filename (long form on sender; no trailing "/") |
| .IP o |
| %G the gid of the file (decimal) or "DEFAULT" |
| .IP o |
%h the remote host name (only available for a daemon) |
%h the remote host name (only available for a daemon) |
.IP o | .IP o |
%i an itemized list of what is being updated |
%i an itemized list of what is being updated |
.IP o | .IP o |
%l the length of the file in bytes |
%l the length of the file in bytes |
.IP o | .IP o |
%L the string \(dq\& \-> SYMLINK\(dq\&, \(dq\& => HARDLINK\(dq\&, or \(dq\&\(dq\& (where \fBSYMLINK\fP or \fBHARDLINK\fP is a filename) | %L the string "\fB\->\ SYMLINK\fP", "\fB=>\ HARDLINK\fP", or "" (where \fBSYMLINK\fP |
.IP o | or \fBHARDLINK\fP is a filename) |
| .IP o |
%m the module name |
%m the module name |
.IP o | .IP o |
%M the last\-modified time of the file | %M the last-modified time of the file |
.IP o | .IP o |
%n the filename (short form; trailing \(dq\&/\(dq\& on dir) | %n the filename (short form; trailing "/" on dir) |
.IP o | .IP o |
%o the operation, which is \(dq\&send\(dq\&, \(dq\&recv\(dq\&, or \(dq\&del.\(dq\& (the latter includes the trailing period) | %o the operation, which is "send", "recv", or "del." (the latter includes |
.IP o | the trailing period) |
| .IP o |
%p the process ID of this rsync session |
%p the process ID of this rsync session |
.IP o | .IP o |
%P the module path |
%P the module path |
.IP o | .IP o |
%t the current date time |
%t the current date time |
.IP o | .IP o |
%u the authenticated username or an empty string |
%u the authenticated username or an empty string |
.IP o | .IP o |
%U the uid of the file (decimal) |
%U the uid of the file (decimal) |
.RE |
.RE |
| .IP |
.IP | For a list of what the characters mean that are output by "%i", see the |
For a list of what the characters mean that are output by \(dq\&%i\(dq\&, see the | \fB\-\-itemize-changes\fP option in the rsync manpage. |
\fB\-\-itemize\-changes\fP option in the rsync manpage. | .IP |
.IP | Note that some of the logged output changes when talking with older rsync |
Note that some of the logged output changes when talking with older | versions. For instance, deleted files were only output as verbose messages |
rsync versions. For instance, deleted files were only output as verbose | prior to rsync 2.6.4. |
messages prior to rsync 2.6.4. | |
.IP | |
.IP "\fBtimeout\fP" |
.IP "\fBtimeout\fP" |
This parameter allows you to override the | This parameter allows you to override the clients choice for I/O timeout |
clients choice for I/O timeout for this module. Using this parameter you | for this module. Using this parameter you can ensure that rsync won't wait |
can ensure that rsync won\(cq\&t wait on a dead client forever. The timeout | on a dead client forever. The timeout is specified in seconds. A value of |
is specified in seconds. A value of zero means no timeout and is the | zero means no timeout and is the default. A good choice for anonymous rsync |
default. A good choice for anonymous rsync daemons may be 600 (giving | daemons may be 600 (giving a 10 minute timeout). |
a 10 minute timeout). | .IP "\fBrefuse\ options\fP" |
.IP | This parameter allows you to specify a space-separated list of rsync |
.IP "\fBrefuse options\fP" | command-line options that will be refused by your rsync daemon. You may |
This parameter allows you to | specify the full option name, its one-letter abbreviation, or a wild-card |
specify a space\-separated list of rsync command line options that will | string that matches multiple options. Beginning in 3.2.0, you can also |
be refused by your rsync daemon. | negate a match term by starting it with a "!". |
You may specify the full option name, its one\-letter abbreviation, or a | .IP |
wild\-card string that matches multiple options. | When an option is refused, the daemon prints an error message and exits. |
| .IP |
For example, this would refuse \fB\-\-checksum\fP (\fB\-c\fP) and all the various |
For example, this would refuse \fB\-\-checksum\fP (\fB\-c\fP) and all the various |
delete options: |
delete options: |
.IP | .RS 4 |
.RS | .IP |
\f(CW refuse options = c delete\fP | .nf |
| refuse options = c delete |
| .fi |
.RE |
.RE |
| .IP |
.IP | |
The reason the above refuses all delete options is that the options imply |
The reason the above refuses all delete options is that the options imply |
\fB\-\-delete\fP, and implied options are refused just like explicit options. |
\fB\-\-delete\fP, and implied options are refused just like explicit options. |
As an additional safety feature, the refusal of \(dq\&delete\(dq\& also refuses | .IP |
\fBremove\-source\-files\fP when the daemon is the sender; if you want the latter | The use of a negated match allows you to fine-tune your refusals after a |
without the former, instead refuse \(dq\&delete\-*\(dq\& \-\- that refuses all the | wild-card, such as this: |
delete modes without affecting \fB\-\-remove\-source\-files\fP. | .RS 4 |
.IP | .IP |
When an option is refused, the daemon prints an error message and exits. | .nf |
To prevent all compression when serving files, | refuse options = delete-* !delete-during |
you can use \(dq\&dont compress = *\(dq\& (see below) | .fi |
instead of \(dq\&refuse options = compress\(dq\& to avoid returning an error to a | .RE |
client that requests compression. | .IP |
.IP | Negated matching can also turn your list of refused options into a list of |
.IP "\fBdont compress\fP" | accepted options. To do this, begin the list with a "\fB*\fP" (to refuse all |
This parameter allows you to select | options) and then specify one or more negated matches to accept. For |
filenames based on wildcard patterns that should not be compressed | example: |
when pulling files from the daemon (no analogous parameter exists to | .RS 4 |
govern the pushing of files to a daemon). | .IP |
Compression is expensive in terms of CPU usage, so it | .nf |
is usually good to not try to compress files that won\(cq\&t compress well, | refuse options = * !a !v !compress* |
such as already compressed files. | .fi |
.IP | .RE |
The \(dq\&dont compress\(dq\& parameter takes a space\-separated list of | .IP |
case\-insensitive wildcard patterns. Any source filename matching one | Don't worry that the "\fB*\fP" will refuse certain vital options such as |
of the patterns will not be compressed during transfer. | \fB\-\-dry-run\fP, \fB\-\-server\fP, \fB\-\-no-iconv\fP, \fB\-\-protect-args\fP, etc. These |
.IP | important options are not matched by wild-card, so they must be overridden |
See the \fB\-\-skip\-compress\fP parameter in the \fBrsync\fP(1) manpage for the list | by their exact name. For instance, if you're forcing iconv transfers you |
of file suffixes that are not compressed by default. Specifying a value | could use something like this: |
for the \(dq\&dont compress\(dq\& parameter changes the default when the daemon is | .RS 4 |
the sender. | .IP |
.IP | .nf |
.IP "\fBpre\-xfer exec\fP, \fBpost\-xfer exec\fP" | refuse options = * no-iconv !a !v |
You may specify a command to be run | .fi |
before and/or after the transfer. If the \fBpre\-xfer exec\fP command fails, the | .RE |
transfer is aborted before it begins. Any output from the script on stdout (up | .IP |
to several KB) will be displayed to the user when aborting, but is NOT | As an additional aid (beginning in 3.2.0), refusing (or "\fB!refusing\fP") the |
displayed if the script returns success. Any output from the script on stderr | "a" or "archive" option also affects all the options that the \fB\-\-archive\fP |
goes to the daemon\(cq\&s stderr, which is typically discarded (though see | option implies (\fB\-rdlptgoD\fP), but only if the option is matched explicitly |
\-\-no\-detatch option for a way to see the stderr output, which can assist with | (not using a wildcard). If you want to do something tricky, you can use |
debugging). | "\fBarchive*\fP" to avoid this side-effect, but keep in mind that no normal |
.IP | rsync client ever sends the actual archive option to the server. |
The following environment variables will be set, though some are | .IP |
specific to the pre\-xfer or the post\-xfer environment: | As an additional safety feature, the refusal of "delete" also refuses |
.IP | \fBremove-source-files\fP when the daemon is the sender; if you want the latter |
.RS | without the former, instead refuse "\fBdelete-*\fP" as that refuses all the |
.IP o | delete modes without affecting \fB\-\-remove-source-files\fP. (Keep in mind that |
| the client's \fB\-\-delete\fP option typically results in \fB\-\-delete-during\fP.) |
| .IP |
| When un-refusing delete options, you should either specify "\fB!delete*\fP" (to |
| accept all delete options) or specify a limited set that includes "delete", |
| such as: |
| .RS 4 |
| .IP |
| .nf |
| refuse options = * !a !delete !delete-during |
| .fi |
| .RE |
| .IP |
| \&... whereas this accepts any delete option except \fB\-\-delete-after\fP: |
| .RS 4 |
| .IP |
| .nf |
| refuse options = * !a !delete* delete-after |
| .fi |
| .RE |
| .IP |
| A note on refusing "compress"\ \-\- it is better to set the "dont compress" |
| daemon parameter to "\fB*\fP" because that disables compression silently |
| instead of returning an error that forces the client to remove the \fB\-z\fP |
| option. |
| .IP |
| If you are un-refusing the compress option, you probably want to match |
| "\fB!compress*\fP" so that you also accept the \fB\-\-compress-level\fP option. |
| .IP |
| Note that the "copy-devices" & "write-devices" options are refused by |
| default, but they can be explicitly accepted with "\fB!copy-devices\fP" and/or |
| "\fB!write-devices\fP". The options "log-file" and "log-file-format" are |
| forcibly refused and cannot be accepted. |
| .IP |
| Here are all the options that are not matched by wild-cards: |
| .IP |
| .RS |
| .IP o |
| \fB\-\-server\fP: Required for rsync to even work. |
| .IP o |
| \fB\-\-rsh\fP, \fB\-e\fP: Required to convey compatibility flags to the server. |
| .IP o |
| \fB\-\-out-format\fP: This is required to convey output behavior to a remote |
| receiver. While rsync passes the older alias \fB\-\-log-format\fP for |
| compatibility reasons, this options should not be confused with |
| \fB\-\-log-file-format\fP. |
| .IP o |
| \fB\-\-sender\fP: Use "write only" parameter instead of refusing this. |
| .IP o |
| \fB\-\-dry-run\fP, \fB\-n\fP: Who would want to disable this? |
| .IP o |
| \fB\-\-protect-args\fP, \fB\-s\fP: This actually makes transfers safer. |
| .IP o |
| \fB\-\-from0\fP, \fB\-0\fP: Makes it easier to accept/refuse \fB\-\-files-from\fP without |
| affecting this helpful modifier. |
| .IP o |
| \fB\-\-iconv\fP: This is auto-disabled based on "charset" parameter. |
| .IP o |
| \fB\-\-no-iconv\fP: Most transfers use this option. |
| .IP o |
| \fB\-\-checksum-seed\fP: Is a fairly rare, safe option. |
| .IP o |
| \fB\-\-write-devices\fP: Is non-wild but also auto-disabled. |
| .RE |
| .IP "\fBdont\ compress\fP" |
| This parameter allows you to select filenames based on wildcard patterns |
| that should not be compressed when pulling files from the daemon (no |
| analogous parameter exists to govern the pushing of files to a daemon). |
| Compression can be expensive in terms of CPU usage, so it is usually good |
| to not try to compress files that won't compress well, such as already |
| compressed files. |
| .IP |
| The "dont compress" parameter takes a space-separated list of |
| case-insensitive wildcard patterns. Any source filename matching one of the |
| patterns will be compressed as little as possible during the transfer. If |
| the compression algorithm has an "off" level (such as zlib/zlibx) then no |
| compression occurs for those files. Other algorithms have the level |
| minimized to reduces the CPU usage as much as possible. |
| .IP |
| See the \fB\-\-skip-compress\fP parameter in the \fBrsync\fP(1) manpage for the |
| list of file suffixes that are not compressed by default. Specifying a |
| value for the "dont compress" parameter changes the default when the daemon |
| is the sender. |
| .IP "\fBearly\ exec\fP, \fBpre-xfer\ exec\fP, \fBpost-xfer\ exec\fP" |
| You may specify a command to be run in the early stages of the connection, |
| or right before and/or after the transfer. If the \fBearly\ exec\fP or |
| \fBpre-xfer\ exec\fP command returns an error code, the transfer is aborted |
| before it begins. Any output from the \fBpre-xfer\ exec\fP command on stdout |
| (up to several KB) will be displayed to the user when aborting, but is |
| \fInot\fP displayed if the script returns success. The other programs cannot |
| send any text to the user. All output except for the \fBpre-xfer\ exec\fP |
| stdout goes to the corresponding daemon's stdout/stderr, which is typically |
| discarded. See the \fB\-\-no-detatch\fP option for a way to see the daemon's |
| output, which can assist with debugging. |
| .IP |
| Note that the \fBearly\ exec\fP command runs before any part of the transfer |
| request is known except for the module name. This helper script can be |
| used to setup a disk mount or decrypt some data into a module dir, but you |
| may need to use \fBlock\ file\fP and \fBmax\ connections\fP to avoid concurrency |
| issues. If the client rsync specified the \fB\-\-early-input=FILE\fP option, it |
| can send up to about 5K of data to the stdin of the early script. The |
| stdin will otherwise be empty. |
| .IP |
| Note that the \fBpost-xfer\ exec\fP command is still run even if one of the |
| other scripts returns an error code. The \fBpre-xfer\ exec\fP command will \fInot\fP |
| be run, however, if the \fBearly\ exec\fP command fails. |
| .IP |
| The following environment variables will be set, though some are specific |
| to the pre-xfer or the post-xfer environment: |
| .IP |
| .RS |
| .IP o |
\fBRSYNC_MODULE_NAME\fP: The name of the module being accessed. |
\fBRSYNC_MODULE_NAME\fP: The name of the module being accessed. |
.IP o | .IP o |
\fBRSYNC_MODULE_PATH\fP: The path configured for the module. |
\fBRSYNC_MODULE_PATH\fP: The path configured for the module. |
.IP o | .IP o |
\fBRSYNC_HOST_ADDR\fP: The accessing host\(cq\&s IP address. | \fBRSYNC_HOST_ADDR\fP: The accessing host's IP address. |
.IP o | .IP o |
\fBRSYNC_HOST_NAME\fP: The accessing host\(cq\&s name. | \fBRSYNC_HOST_NAME\fP: The accessing host's name. |
.IP o | .IP o |
\fBRSYNC_USER_NAME\fP: The accessing user\(cq\&s name (empty if no user). | \fBRSYNC_USER_NAME\fP: The accessing user's name (empty if no user). |
.IP o | .IP o |
\fBRSYNC_PID\fP: A unique number for this transfer. |
\fBRSYNC_PID\fP: A unique number for this transfer. |
.IP o | .IP o |
\fBRSYNC_REQUEST\fP: (pre\-xfer only) The module/path info specified | \fBRSYNC_REQUEST\fP: (pre-xfer only) The module/path info specified by the |
by the user. Note that the user can specify multiple source files, | user. Note that the user can specify multiple source files, so the |
so the request can be something like \(dq\&mod/path1 mod/path2\(dq\&, etc. | request can be something like "mod/path1 mod/path2", etc. |
.IP o | .IP o |
\fBRSYNC_ARG#\fP: (pre\-xfer only) The pre\-request arguments are set | \fBRSYNC_ARG#\fP: (pre-xfer only) The pre-request arguments are set in these |
in these numbered values. RSYNC_ARG0 is always \(dq\&rsyncd\(dq\&, followed by | numbered values. RSYNC_ARG0 is always "rsyncd", followed by the options |
the options that were used in RSYNC_ARG1, and so on. There will be a | that were used in RSYNC_ARG1, and so on. There will be a value of "." |
value of \(dq\&.\(dq\& indicating that the options are done and the path args | indicating that the options are done and the path args are beginning\ \-\- |
are beginning \-\- these contain similar information to RSYNC_REQUEST, | these contain similar information to RSYNC_REQUEST, but with values |
but with values separated and the module name stripped off. | separated and the module name stripped off. |
.IP o | .IP o |
\fBRSYNC_EXIT_STATUS\fP: (post\-xfer only) the server side\(cq\&s exit value. | \fBRSYNC_EXIT_STATUS\fP: (post-xfer only) the server side's exit value. This |
This will be 0 for a successful run, a positive value for an error that the | will be 0 for a successful run, a positive value for an error that the |
server generated, or a \-1 if rsync failed to exit properly. Note that an |
server generated, or a \-1 if rsync failed to exit properly. Note that an |
error that occurs on the client side does not currently get sent to the |
error that occurs on the client side does not currently get sent to the |
server side, so this is not the final exit status for the whole transfer. |
server side, so this is not the final exit status for the whole transfer. |
.IP o | .IP o |
\fBRSYNC_RAW_STATUS\fP: (post\-xfer only) the raw exit value from | \fBRSYNC_RAW_STATUS\fP: (post-xfer only) the raw exit value from |
\f(CWwaitpid()\fP | \fBwaitpid()\fP. |
\&. | |
.RE |
.RE |
| .IP |
.IP | |
Even though the commands can be associated with a particular module, they |
Even though the commands can be associated with a particular module, they |
are run using the permissions of the user that started the daemon (not the |
are run using the permissions of the user that started the daemon (not the |
module\(cq\&s uid/gid setting) without any chroot restrictions. | module's uid/gid setting) without any chroot restrictions. |
.IP | .IP |
| These settings honor 2 environment variables: use RSYNC_SHELL to set a |
| shell to use when running the command (which otherwise uses your |
| \fBsystem()\fP call's default shell), and use RSYNC_NO_XFER_EXEC to disable |
| both options completely. |
| .P |
.SH "CONFIG DIRECTIVES" |
.SH "CONFIG DIRECTIVES" |
| .P |
.PP | |
There are currently two config directives available that allow a config file to |
There are currently two config directives available that allow a config file to |
incorporate the contents of other files: \fB&include\fP and \fB&merge\fP. Both | incorporate the contents of other files: \fB&include\fP and \fB&merge\fP. Both allow |
allow a reference to either a file or a directory. They differ in how | a reference to either a file or a directory. They differ in how segregated the |
segregated the file\(cq\&s contents are considered to be. | file's contents are considered to be. |
.PP | .P |
The \fB&include\fP directive treats each file as more distinct, with each one |
The \fB&include\fP directive treats each file as more distinct, with each one |
inheriting the defaults of the parent file, starting the parameter parsing | inheriting the defaults of the parent file, starting the parameter parsing as |
as globals/defaults, and leaving the defaults unchanged for the parsing of | globals/defaults, and leaving the defaults unchanged for the parsing of the |
the rest of the parent file. | rest of the parent file. |
.PP | .P |
The \fB&merge\fP directive, on the other hand, treats the file\(cq\&s contents as | The \fB&merge\fP directive, on the other hand, treats the file's contents as if it |
if it were simply inserted in place of the directive, and thus it can set | were simply inserted in place of the directive, and thus it can set parameters |
parameters in a module started in another file, can affect the defaults for | in a module started in another file, can affect the defaults for other files, |
other files, etc. | etc. |
.PP | .P |
When an \fB&include\fP or \fB&merge\fP directive refers to a directory, it will read | When an \fB&include\fP or \fB&merge\fP directive refers to a directory, it will read in |
in all the \fB*.conf\fP or \fB*.inc\fP files (respectively) that are contained inside | all the \fB*.conf\fP or \fB*.inc\fP files (respectively) that are contained inside that |
that directory (without any | directory (without any recursive scanning), with the files sorted into alpha |
recursive scanning), with the files sorted into alpha order. So, if you have a | order. So, if you have a directory named "rsyncd.d" with the files "foo.conf", |
directory named \(dq\&rsyncd.d\(dq\& with the files \(dq\&foo.conf\(dq\&, \(dq\&bar.conf\(dq\&, and | "bar.conf", and "baz.conf" inside it, this directive: |
\(dq\&baz.conf\(dq\& inside it, this directive: | .RS 4 |
.PP | .P |
.nf | .nf |
&include /path/rsyncd.d | &include /path/rsyncd.d |
.fi | .fi |
| .RE |
.PP | .P |
would be the same as this set of directives: |
would be the same as this set of directives: |
.PP | .RS 4 |
.nf | .P |
&include /path/rsyncd.d/bar.conf | .nf |
&include /path/rsyncd.d/baz.conf | &include /path/rsyncd.d/bar.conf |
&include /path/rsyncd.d/foo.conf | &include /path/rsyncd.d/baz.conf |
.fi | &include /path/rsyncd.d/foo.conf |
| .fi |
.PP | .RE |
| .P |
except that it adjusts as files are added and removed from the directory. |
except that it adjusts as files are added and removed from the directory. |
.PP | .P |
The advantage of the \fB&include\fP directive is that you can define one or more |
The advantage of the \fB&include\fP directive is that you can define one or more |
modules in a separate file without worrying about unintended side\-effects | modules in a separate file without worrying about unintended side-effects |
between the self\-contained module files. | between the self-contained module files. |
.PP | .P |
The advantage of the \fB&merge\fP directive is that you can load config snippets |
The advantage of the \fB&merge\fP directive is that you can load config snippets |
that can be included into multiple module definitions, and you can also set |
that can be included into multiple module definitions, and you can also set |
global values that will affect connections (such as \fBmotd file\fP), or globals | global values that will affect connections (such as \fBmotd\ file\fP), or globals |
that will affect other include files. |
that will affect other include files. |
.PP | .P |
For example, this is a useful /etc/rsyncd.conf file: |
For example, this is a useful /etc/rsyncd.conf file: |
.PP | .RS 4 |
.nf | .P |
port = 873 | .nf |
log file = /var/log/rsync.log | port = 873 |
pid file = /var/lock/rsync.lock | log file = /var/log/rsync.log |
| pid file = /var/lock/rsync.lock |
|
|
&merge /etc/rsyncd.d | &merge /etc/rsyncd.d |
&include /etc/rsyncd.d | &include /etc/rsyncd.d |
.fi | .fi |
| .RE |
.PP | .P |
This would merge any /etc/rsyncd.d/*.inc files (for global values that should | This would merge any \fB/etc/rsyncd.d/*.inc\fP files (for global values that should |
stay in effect), and then include any /etc/rsyncd.d/*.conf files (defining | stay in effect), and then include any \fB/etc/rsyncd.d/*.conf\fP files (defining |
modules without any global\-value cross\-talk). | modules without any global-value cross-talk). |
.PP | .P |
.SH "AUTHENTICATION STRENGTH" |
.SH "AUTHENTICATION STRENGTH" |
| .P |
.PP | The authentication protocol used in rsync is a 128 bit MD4 based challenge |
The authentication protocol used in rsync is a 128 bit MD4 based | response system. This is fairly weak protection, though (with at least one |
challenge response system. This is fairly weak protection, though (with | brute-force hash-finding algorithm publicly available), so if you want really |
at least one brute\-force hash\-finding algorithm publicly available), so | top-quality security, then I recommend that you run rsync over ssh. (Yes, a |
if you want really top\-quality security, then I recommend that you run | future version of rsync will switch over to a stronger hashing method.) |
rsync over ssh. (Yes, a future version of rsync will switch over to a | .P |
stronger hashing method.) | |
.PP | |
Also note that the rsync daemon protocol does not currently provide any |
Also note that the rsync daemon protocol does not currently provide any |
encryption of the data that is transferred over the connection. Only |
encryption of the data that is transferred over the connection. Only |
authentication is provided. Use ssh as the transport if you want | authentication is provided. Use ssh as the transport if you want encryption. |
| .P |
| You can also make use of SSL/TLS encryption if you put rsync behind an |
| SSL proxy. |
| .P |
| .SH "SSL/TLS Daemon Setup" |
| .P |
| When setting up an rsync daemon for access via SSL/TLS, you will need to |
| configure a proxy (such as haproxy or nginx) as the front-end that handles the |
encryption. |
encryption. |
.PP | .P |
Future versions of rsync may support SSL for better authentication and | .IP o |
encryption, but that is still being investigated. | You should limit the access to the backend-rsyncd port to only allow the |
.PP | proxy to connect. If it is on the same host as the proxy, then configuring |
.SH "EXAMPLES" | it to only listen on localhost is a good idea. |
| .IP o |
| You should consider turning on the \fBproxy\ protocol\fP parameter if your proxy |
| supports sending that information. The examples below assume that this is |
| enabled. |
| .P |
| An example haproxy setup is as follows: |
| .RS 4 |
| .P |
| .nf |
| frontend fe_rsync-ssl |
| bind :::874 ssl crt /etc/letsencrypt/example.com/combined.pem |
| mode tcp |
| use_backend be_rsync |
|
|
.PP | backend be_rsync |
A simple rsyncd.conf file that allow anonymous rsync to a ftp area at | mode tcp |
\f(CW/home/ftp\fP would be: | server local-rsync 127.0.0.1:873 check send-proxy |
.PP | .fi |
.nf | .RE |
| .P |
| An example nginx proxy setup is as follows: |
| .RS 4 |
| .P |
| .nf |
| stream { |
| server { |
| listen 874 ssl; |
| listen [::]:874 ssl; |
|
|
|
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem; |
|
ssl_certificate_key /etc/letsencrypt/example.com/privkey.pem; |
|
|
|
proxy_pass localhost:873; |
|
proxy_protocol on; # Requires "proxy protocol = true" |
|
proxy_timeout 1m; |
|
proxy_connect_timeout 5s; |
|
} |
|
} |
|
.fi |
|
.RE |
|
.P |
|
.SH "EXAMPLES" |
|
.P |
|
A simple rsyncd.conf file that allow anonymous rsync to a ftp area at |
|
\fB/home/ftp\fP would be: |
|
.RS 4 |
|
.P |
|
.nf |
[ftp] |
[ftp] |
path = /home/ftp |
path = /home/ftp |
comment = ftp export area |
comment = ftp export area |
| .fi |
.fi | .RE |
| .P |
.PP | |
A more sophisticated example would be: |
A more sophisticated example would be: |
.PP | .RS 4 |
.nf | .P |
| .nf |
uid = nobody |
uid = nobody |
gid = nobody |
gid = nobody |
use chroot = yes |
use chroot = yes |
max connections = 4 |
max connections = 4 |
syslog facility = local5 |
syslog facility = local5 |
pid file = /var/run/rsyncd.pid |
pid file = /var/run/rsyncd.pid |
|
slp refresh = 3600 |
|
|
[ftp] |
[ftp] |
path = /var/ftp/./pub |
path = /var/ftp/./pub |
Line 1003 pid file = /var/run/rsyncd.pid
|
Line 1262 pid file = /var/run/rsyncd.pid
|
comment = CVS repository (requires authentication) |
comment = CVS repository (requires authentication) |
auth users = tridge, susan |
auth users = tridge, susan |
secrets file = /etc/rsyncd.secrets |
secrets file = /etc/rsyncd.secrets |
| .fi |
.fi | .RE |
| .P |
.PP | |
The /etc/rsyncd.secrets file would look something like this: |
The /etc/rsyncd.secrets file would look something like this: |
.PP | .RS 4 |
.RS | .P |
\f(CWtridge:mypass\fP | .nf |
.br | tridge:mypass |
\f(CWsusan:herpass\fP | susan:herpass |
.br | .fi |
.RE |
.RE |
| .P |
.PP | |
.SH "FILES" |
.SH "FILES" |
| .P |
.PP | |
/etc/rsyncd.conf or rsyncd.conf |
/etc/rsyncd.conf or rsyncd.conf |
.PP | .P |
.SH "SEE ALSO" |
.SH "SEE ALSO" |
| .P |
.PP | \fBrsync\fP(1), \fBrsync-ssl\fP(1) |
\fBrsync\fP(1) | .P |
.PP | |
.SH "DIAGNOSTICS" | |
| |
.PP | |
.SH "BUGS" |
.SH "BUGS" |
| .P |
.PP | |
Please report bugs! The rsync bug tracking system is online at |
Please report bugs! The rsync bug tracking system is online at |
http://rsync.samba.org/ | https://rsync.samba.org/. |
.PP | .P |
.SH "VERSION" |
.SH "VERSION" |
| .P |
.PP | This man page is current for version 3.2.3 of rsync. |
This man page is current for version 3.1.0 of rsync. | .P |
.PP | |
.SH "CREDITS" |
.SH "CREDITS" |
| .P |
.PP | |
rsync is distributed under the GNU General Public License. See the file |
rsync is distributed under the GNU General Public License. See the file |
COPYING for details. |
COPYING for details. |
.PP | .P |
The primary ftp site for rsync is | The primary ftp site for rsync is ftp://rsync.samba.org/pub/rsync |
ftp://rsync.samba.org/pub/rsync. | .P |
.PP | A web site is available at https://rsync.samba.org/. |
A WEB site is available at | .P |
http://rsync.samba.org/ | |
.PP | |
We would be delighted to hear from you if you like this program. |
We would be delighted to hear from you if you like this program. |
.PP | .P |
This program uses the zlib compression library written by Jean\-loup | This program uses the zlib compression library written by Jean-loup Gailly and |
Gailly and Mark Adler. | Mark Adler. |
.PP | .P |
.SH "THANKS" |
.SH "THANKS" |
| .P |
.PP | Thanks to Warren Stanley for his original idea and patch for the rsync daemon. |
Thanks to Warren Stanley for his original idea and patch for the rsync | Thanks to Karsten Thygesen for his many suggestions and documentation! |
daemon. Thanks to Karsten Thygesen for his many suggestions and | .P |
documentation! | |
.PP | |
.SH "AUTHOR" |
.SH "AUTHOR" |
| .P |
.PP | rsync was written by Andrew Tridgell and Paul Mackerras. Many people have |
rsync was written by Andrew Tridgell and Paul Mackerras. | later contributed to it. |
Many people have later contributed to it. | .P |
.PP | |
Mailing lists for support and development are available at |
Mailing lists for support and development are available at |
http://lists.samba.org | https://lists.samba.org/. |