- Don't require a daemon config &directive to use an equal sign.
[rsync/rsync.git] / rsyncd.conf.yo
... / ...
CommitLineData
1mailto(rsync-bugs@samba.org)
2manpage(rsyncd.conf)(5)(29 Jun 2008)()()
3manpagename(rsyncd.conf)(configuration file for rsync in daemon mode)
4manpagesynopsis()
5
6rsyncd.conf
7
8manpagedescription()
9
10The rsyncd.conf file is the runtime configuration file for rsync when
11run as an rsync daemon.
12
13The rsyncd.conf file controls authentication, access, logging and
14available modules.
15
16manpagesection(FILE FORMAT)
17
18The file consists of modules and parameters. A module begins with the
19name of the module in square brackets and continues until the next
20module begins. Modules contain parameters of the form "name = value".
21
22The file is line-based -- that is, each newline-terminated line represents
23either a comment, a module name or a parameter.
24
25Only the first equals sign in a parameter is significant. Whitespace before
26or after the first equals sign is discarded. Leading, trailing and internal
27whitespace in module and parameter names is irrelevant. Leading and
28trailing whitespace in a parameter value is discarded. Internal whitespace
29within a parameter value is retained verbatim.
30
31Any line beginning with a hash (#) is ignored, as are lines containing
32only whitespace.
33
34Any line ending in a \ is "continued" on the next line in the
35customary UNIX fashion.
36
37The values following the equals sign in parameters are all either a string
38(no quotes needed) or a boolean, which may be given as yes/no, 0/1 or
39true/false. Case is not significant in boolean values, but is preserved
40in string values.
41
42manpagesection(LAUNCHING THE RSYNC DAEMON)
43
44The rsync daemon is launched by specifying the bf(--daemon) option to
45rsync.
46
47The daemon must run with root privileges if you wish to use chroot, to
48bind to a port numbered under 1024 (as is the default 873), or to set
49file ownership. Otherwise, it must just have permission to read and
50write the appropriate data, log, and lock files.
51
52You can launch it either via inetd, as a stand-alone daemon, or from
53an rsync client via a remote shell. If run as a stand-alone daemon then
54just run the command "bf(rsync --daemon)" from a suitable startup script.
55
56When run via inetd you should add a line like this to /etc/services:
57
58verb( rsync 873/tcp)
59
60and a single line something like this to /etc/inetd.conf:
61
62verb( rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon)
63
64Replace "/usr/bin/rsync" with the path to where you have rsync installed on
65your system. You will then need to send inetd a HUP signal to tell it to
66reread its config file.
67
68Note that you should bf(not) send the rsync daemon a HUP signal to force
69it to reread the tt(rsyncd.conf) file. The file is re-read on each client
70connection.
71
72manpagesection(GLOBAL PARAMETERS)
73
74The first parameters in the file (before a [module] header) are the
75global parameters.
76
77You may also include any module parameters in the global part of the
78config file in which case the supplied value will override the
79default for that parameter.
80
81startdit()
82dit(bf(motd file)) This parameter allows you to specify a
83"message of the day" to display to clients on each connect. This
84usually contains site information and any legal notices. The default
85is no motd file.
86This can be overridden by the bf(--dparam=motdfile=FILE)
87command-line option when starting the daemon.
88
89dit(bf(pid file)) This parameter tells the rsync daemon to write
90its process ID to that file. If the file already exists, the rsync
91daemon will abort rather than overwrite the file.
92This can be overridden by the bf(--dparam=pidfile=FILE)
93command-line option when starting the daemon.
94
95dit(bf(port)) You can override the default port the daemon will listen on
96by specifying this value (defaults to 873). This is ignored if the daemon
97is being run by inetd, and is superseded by the bf(--port) command-line option.
98
99dit(bf(address)) You can override the default IP address the daemon
100will listen on by specifying this value. This is ignored if the daemon is
101being run by inetd, and is superseded by the bf(--address) command-line option.
102
103dit(bf(socket options)) This parameter can provide endless fun for people
104who like to tune their systems to the utmost degree. You can set all
105sorts of socket options which may make transfers faster (or
106slower!). Read the man page for the code(setsockopt()) system call for
107details on some of the options you may be able to set. By default no
108special socket options are set. These settings can also be specified
109via the bf(--sockopts) command-line option.
110
111enddit()
112
113manpagesection(MODULE PARAMETERS)
114
115After the global parameters you should define a number of modules, each
116module exports a directory tree as a symbolic name. Modules are
117exported by specifying a module name in square brackets [module]
118followed by the parameters for that module.
119The module name cannot contain a slash or a closing square bracket. If the
120name contains whitespace, each internal sequence of whitespace will be
121changed into a single space, while leading or trailing whitespace will be
122discarded.
123
124startdit()
125
126dit(bf(comment)) This parameter specifies a description string
127that is displayed next to the module name when clients obtain a list
128of available modules. The default is no comment.
129
130dit(bf(path)) This parameter specifies the directory in the daemon's
131filesystem to make available in this module. You must specify this parameter
132for each module in tt(rsyncd.conf).
133
134dit(bf(use chroot)) If "use chroot" is true, the rsync daemon will chroot
135to the "path" before starting the file transfer with the client. This has
136the advantage of extra protection against possible implementation security
137holes, but it has the disadvantages of requiring super-user privileges,
138of not being able to follow symbolic links that are either absolute or outside
139of the new root path, and of complicating the preservation of users and groups
140by name (see below).
141
142As an additional safety feature, you can specify a dot-dir in the module's
143"path" to indicate the point where the chroot should occur. This allows rsync
144to run in a chroot with a non-"/" path for the top of the transfer hierarchy.
145Doing this guards against unintended library loading (since those absolute
146paths will not be inside the transfer hierarchy unless you have used an unwise
147pathname), and lets you setup libraries for the chroot that are outside of the
148transfer. For example, specifying "/var/rsync/./module1" will chroot to the
149"/var/rsync" directory and set the inside-chroot path to "/module1". If you
150had omitted the dot-dir, the chroot would have used the whole path, and the
151inside-chroot path would have been "/".
152
153When "use chroot" is false or the inside-chroot path is not "/", rsync will:
154(1) munge symlinks by
155default for security reasons (see "munge symlinks" for a way to turn this
156off, but only if you trust your users), (2) substitute leading slashes in
157absolute paths with the module's path (so that options such as
158bf(--backup-dir), bf(--compare-dest), etc. interpret an absolute path as
159rooted in the module's "path" dir), and (3) trim ".." path elements from
160args if rsync believes they would escape the module hierarchy.
161The default for "use chroot" is true, and is the safer choice (especially
162if the module is not read-only).
163
164When this parameter is enabled, rsync will not attempt to map users and groups
165by name (by default), but instead copy IDs as though bf(--numeric-ids) had
166been specified. In order to enable name-mapping, rsync needs to be able to
167use the standard library functions for looking up names and IDs (i.e.
168code(getpwuid()), code(getgrgid()), code(getpwname()), and code(getgrnam())).
169This means the rsync
170process in the chroot hierarchy will need to have access to the resources
171used by these library functions (traditionally /etc/passwd and
172/etc/group, but perhaps additional dynamic libraries as well).
173
174If you copy the necessary resources into the module's chroot area, you
175should protect them through your OS's normal user/group or ACL settings (to
176prevent the rsync module's user from being able to change them), and then
177hide them from the user's view via "exclude" (see how in the discussion of
178that parameter). At that point it will be safe to enable the mapping of users
179and groups by name using the "numeric ids" daemon parameter (see below).
180
181Note also that you are free to setup custom user/group information in the
182chroot area that is different from your normal system. For example, you
183could abbreviate the list of users and groups.
184
185dit(bf(numeric ids)) Enabling this parameter disables the mapping
186of users and groups by name for the current daemon module. This prevents
187the daemon from trying to load any user/group-related files or libraries.
188This enabling makes the transfer behave as if the client had passed
189the bf(--numeric-ids) command-line option. By default, this parameter is
190enabled for chroot modules and disabled for non-chroot modules.
191
192A chroot-enabled module should not have this parameter enabled unless you've
193taken steps to ensure that the module has the necessary resources it needs
194to translate names, and that it is not possible for a user to change those
195resources.
196
197dit(bf(munge symlinks)) This parameter tells rsync to modify
198all incoming symlinks in a way that makes them unusable but recoverable
199(see below). This should help protect your files from user trickery when
200your daemon module is writable. The default is disabled when "use chroot"
201is on and the inside-chroot path is "/", otherwise it is enabled.
202
203If you disable this parameter on a daemon that is not read-only, there
204are tricks that a user can play with uploaded symlinks to access
205daemon-excluded items (if your module has any), and, if "use chroot"
206is off, rsync can even be tricked into showing or changing data that
207is outside the module's path (as access-permissions allow).
208
209The way rsync disables the use of symlinks is to prefix each one with
210the string "/rsyncd-munged/". This prevents the links from being used
211as long as that directory does not exist. When this parameter is enabled,
212rsync will refuse to run if that path is a directory or a symlink to
213a directory. When using the "munge symlinks" parameter in a chroot area
214that has an inside-chroot path of "/", you should add "/rsyncd-munged/"
215to the exclude setting for the module so that
216a user can't try to create it.
217
218Note: rsync makes no attempt to verify that any pre-existing symlinks in
219the hierarchy are as safe as you want them to be. If you setup an rsync
220daemon on a new area or locally add symlinks, you can manually protect your
221symlinks from being abused by prefixing "/rsyncd-munged/" to the start of
222every symlink's value. There is a perl script in the support directory
223of the source code named "munge-symlinks" that can be used to add or remove
224this prefix from your symlinks.
225
226When this parameter is disabled on a writable module and "use chroot" is off
227(or the inside-chroot path is not "/"),
228incoming symlinks will be modified to drop a leading slash and to remove ".."
229path elements that rsync believes will allow a symlink to escape the module's
230hierarchy. There are tricky ways to work around this, though, so you had
231better trust your users if you choose this combination of parameters.
232
233dit(bf(charset)) This specifies the name of the character set in which the
234module's filenames are stored. If the client uses an bf(--iconv) option,
235the daemon will use the value of the "charset" parameter regardless of the
236character set the client actually passed. This allows the daemon to
237support charset conversion in a chroot module without extra files in the
238chroot area, and also ensures that name-translation is done in a consistent
239manner. If the "charset" parameter is not set, the bf(--iconv) option is
240refused, just as if "iconv" had been specified via "refuse options".
241
242If you wish to force users to always use bf(--iconv) for a particular
243module, add "no-iconv" to the "refuse options" parameter. Keep in mind
244that this will restrict access to your module to very new rsync clients.
245
246dit(bf(max connections)) This parameter allows you to
247specify the maximum number of simultaneous connections you will allow.
248Any clients connecting when the maximum has been reached will receive a
249message telling them to try later. The default is 0, which means no limit.
250A negative value disables the module.
251See also the "lock file" parameter.
252
253dit(bf(log file)) When the "log file" parameter is set to a non-empty
254string, the rsync daemon will log messages to the indicated file rather
255than using syslog. This is particularly useful on systems (such as AIX)
256where code(syslog()) doesn't work for chrooted programs. The file is
257opened before code(chroot()) is called, allowing it to be placed outside
258the transfer. If this value is set on a per-module basis instead of
259globally, the global log will still contain any authorization failures
260or config-file error messages.
261
262If the daemon fails to open the specified file, it will fall back to
263using syslog and output an error about the failure. (Note that the
264failure to open the specified log file used to be a fatal error.)
265
266This setting can be overridden by using the bf(--log-file=FILE) or
267bf(--dparam=logfile=FILE) command-line options. The former overrides
268all the log-file parameters of the daemon and all module settings.
269The latter sets the daemon's log file and the default for all the
270modules, which still allows modules to override the default setting.
271
272dit(bf(syslog facility)) This parameter allows you to
273specify the syslog facility name to use when logging messages from the
274rsync daemon. You may use any standard syslog facility name which is
275defined on your system. Common names are auth, authpriv, cron, daemon,
276ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0,
277local1, local2, local3, local4, local5, local6 and local7. The default
278is daemon. This setting has no effect if the "log file" setting is a
279non-empty string (either set in the per-modules settings, or inherited
280from the global settings).
281
282dit(bf(max verbosity)) This parameter allows you to control
283the maximum amount of verbose information that you'll allow the daemon to
284generate (since the information goes into the log file). The default is 1,
285which allows the client to request one level of verbosity.
286
287dit(bf(lock file)) This parameter specifies the file to use to
288support the "max connections" parameter. The rsync daemon uses record
289locking on this file to ensure that the max connections limit is not
290exceeded for the modules sharing the lock file.
291The default is tt(/var/run/rsyncd.lock).
292
293dit(bf(read only)) This parameter determines whether clients
294will be able to upload files or not. If "read only" is true then any
295attempted uploads will fail. If "read only" is false then uploads will
296be possible if file permissions on the daemon side allow them. The default
297is for all modules to be read only.
298
299dit(bf(write only)) This parameter determines whether clients
300will be able to download files or not. If "write only" is true then any
301attempted downloads will fail. If "write only" is false then downloads
302will be possible if file permissions on the daemon side allow them. The
303default is for this parameter to be disabled.
304
305dit(bf(list)) This parameter determines if this module should be
306listed when the client asks for a listing of available modules. By
307setting this to false you can create hidden modules. The default is
308for modules to be listable.
309
310dit(bf(uid)) This parameter specifies the user name or user ID that
311file transfers to and from that module should take place as when the daemon
312was run as root. In combination with the "gid" parameter this determines what
313file permissions are available. The default is uid -2, which is normally
314the user "nobody".
315
316dit(bf(gid)) This parameter specifies the group name or group ID that
317file transfers to and from that module should take place as when the daemon
318was run as root. This complements the "uid" parameter. The default is gid -2,
319which is normally the group "nobody".
320
321dit(bf(fake super)) Setting "fake super = yes" for a module causes the
322daemon side to behave as if the bf(--fake-user) command-line option had
323been specified. This allows the full attributes of a file to be stored
324without having to have the daemon actually running as root.
325
326dit(bf(filter)) The daemon has its own filter chain that determines what files
327it will let the client access. This chain is not sent to the client and is
328independent of any filters the client may have specified. Files excluded by
329the daemon filter chain (bf(daemon-excluded) files) are treated as non-existent
330if the client tries to pull them, are skipped with an error message if the
331client tries to push them (triggering exit code 23), and are never deleted from
332the module. You can use daemon filters to prevent clients from downloading or
333tampering with private administrative files, such as files you may add to
334support uid/gid name translations.
335
336The daemon filter chain is built from the "filter", "include from", "include",
337"exclude from", and "exclude" parameters, in that order of priority. Anchored
338patterns are anchored at the root of the module. To prevent access to an
339entire subtree, for example, "/secret", you em(must) exclude everything in the
340subtree; the easiest way to do this is with a triple-star pattern like
341"/secret/***".
342
343The "filter" parameter takes a space-separated list of daemon filter rules,
344though it is smart enough to know not to split a token at an internal space in
345a rule (e.g. "- /foo - /bar" is parsed as two rules). You may specify one or
346more merge-file rules using the normal syntax. Only one "filter" parameter can
347apply to a given module in the config file, so put all the rules you want in a
348single parameter. Note that per-directory merge-file rules do not provide as
349much protection as global rules, but they can be used to make bf(--delete) work
350better during a client download operation if the per-dir merge files are
351included in the transfer and the client requests that they be used.
352
353dit(bf(exclude)) This parameter takes a space-separated list of daemon
354exclude patterns. As with the client bf(--exclude) option, patterns can be
355qualified with "- " or "+ " to explicitly indicate exclude/include. Only one
356"exclude" parameter can apply to a given module. See the "filter" parameter
357for a description of how excluded files affect the daemon.
358
359dit(bf(include)) Use an "include" to override the effects of the "exclude"
360parameter. Only one "include" parameter can apply to a given module. See the
361"filter" parameter for a description of how excluded files affect the daemon.
362
363dit(bf(exclude from)) This parameter specifies the name of a file
364on the daemon that contains daemon exclude patterns, one per line. Only one
365"exclude from" parameter can apply to a given module; if you have multiple
366exclude-from files, you can specify them as a merge file in the "filter"
367parameter. See the "filter" parameter for a description of how excluded files
368affect the daemon.
369
370dit(bf(include from)) Analogue of "exclude from" for a file of daemon include
371patterns. Only one "include from" parameter can apply to a given module. See
372the "filter" parameter for a description of how excluded files affect the
373daemon.
374
375dit(bf(incoming chmod)) This parameter allows you to specify a set of
376comma-separated chmod strings that will affect the permissions of all
377incoming files (files that are being received by the daemon). These
378changes happen after all other permission calculations, and this will
379even override destination-default and/or existing permissions when the
380client does not specify bf(--perms).
381See the description of the bf(--chmod) rsync option and the bf(chmod)(1)
382manpage for information on the format of this string.
383
384dit(bf(outgoing chmod)) This parameter allows you to specify a set of
385comma-separated chmod strings that will affect the permissions of all
386outgoing files (files that are being sent out from the daemon). These
387changes happen first, making the sent permissions appear to be different
388than those stored in the filesystem itself. For instance, you could
389disable group write permissions on the server while having it appear to
390be on to the clients.
391See the description of the bf(--chmod) rsync option and the bf(chmod)(1)
392manpage for information on the format of this string.
393
394dit(bf(auth users)) This parameter specifies a comma and
395space-separated list of usernames that will be allowed to connect to
396this module. The usernames do not need to exist on the local
397system. The usernames may also contain shell wildcard characters. If
398"auth users" is set then the client will be challenged to supply a
399username and password to connect to the module. A challenge response
400authentication protocol is used for this exchange. The plain text
401usernames and passwords are stored in the file specified by the
402"secrets file" parameter. The default is for all users to be able to
403connect without a password (this is called "anonymous rsync").
404
405See also the "CONNECTING TO AN RSYNC DAEMON OVER A REMOTE SHELL
406PROGRAM" section in bf(rsync)(1) for information on how handle an
407rsyncd.conf-level username that differs from the remote-shell-level
408username when using a remote shell to connect to an rsync daemon.
409
410dit(bf(secrets file)) This parameter specifies the name of
411a file that contains the username:password pairs used for
412authenticating this module. This file is only consulted if the "auth
413users" parameter is specified. The file is line based and contains
414username:password pairs separated by a single colon. Any line starting
415with a hash (#) is considered a comment and is skipped. The passwords
416can contain any characters but be warned that many operating systems
417limit the length of passwords that can be typed at the client end, so
418you may find that passwords longer than 8 characters don't work.
419
420There is no default for the "secrets file" parameter, you must choose a name
421(such as tt(/etc/rsyncd.secrets)). The file must normally not be readable
422by "other"; see "strict modes".
423
424dit(bf(strict modes)) This parameter determines whether or not
425the permissions on the secrets file will be checked. If "strict modes" is
426true, then the secrets file must not be readable by any user ID other
427than the one that the rsync daemon is running under. If "strict modes" is
428false, the check is not performed. The default is true. This parameter
429was added to accommodate rsync running on the Windows operating system.
430
431dit(bf(hosts allow)) This parameter allows you to specify a
432list of patterns that are matched against a connecting clients
433hostname and IP address. If none of the patterns match then the
434connection is rejected.
435
436Each pattern can be in one of five forms:
437
438quote(itemization(
439 it() a dotted decimal IPv4 address of the form a.b.c.d, or an IPv6 address
440 of the form a:b:c::d:e:f. In this case the incoming machine's IP address
441 must match exactly.
442 it() an address/mask in the form ipaddr/n where ipaddr is the IP address
443 and n is the number of one bits in the netmask. All IP addresses which
444 match the masked IP address will be allowed in.
445 it() an address/mask in the form ipaddr/maskaddr where ipaddr is the
446 IP address and maskaddr is the netmask in dotted decimal notation for IPv4,
447 or similar for IPv6, e.g. ffff:ffff:ffff:ffff:: instead of /64. All IP
448 addresses which match the masked IP address will be allowed in.
449 it() a hostname. The hostname as determined by a reverse lookup will
450 be matched (case insensitive) against the pattern. Only an exact
451 match is allowed in.
452 it() a hostname pattern using wildcards. These are matched using the
453 same rules as normal unix filename matching. If the pattern matches
454 then the client is allowed in.
455))
456
457Note IPv6 link-local addresses can have a scope in the address specification:
458
459quote(
460tt( fe80::1%link1)nl()
461tt( fe80::%link1/64)nl()
462tt( fe80::%link1/ffff:ffff:ffff:ffff::)nl()
463)
464
465You can also combine "hosts allow" with a separate "hosts deny"
466parameter. If both parameters are specified then the "hosts allow" parameter is
467checked first and a match results in the client being able to
468connect. The "hosts deny" parameter is then checked and a match means
469that the host is rejected. If the host does not match either the
470"hosts allow" or the "hosts deny" patterns then it is allowed to
471connect.
472
473The default is no "hosts allow" parameter, which means all hosts can connect.
474
475dit(bf(hosts deny)) This parameter allows you to specify a
476list of patterns that are matched against a connecting clients
477hostname and IP address. If the pattern matches then the connection is
478rejected. See the "hosts allow" parameter for more information.
479
480The default is no "hosts deny" parameter, which means all hosts can connect.
481
482dit(bf(ignore errors)) This parameter tells rsyncd to
483ignore I/O errors on the daemon when deciding whether to run the delete
484phase of the transfer. Normally rsync skips the bf(--delete) step if any
485I/O errors have occurred in order to prevent disastrous deletion due
486to a temporary resource shortage or other I/O error. In some cases this
487test is counter productive so you can use this parameter to turn off this
488behavior.
489
490dit(bf(ignore nonreadable)) This tells the rsync daemon to completely
491ignore files that are not readable by the user. This is useful for
492public archives that may have some non-readable files among the
493directories, and the sysadmin doesn't want those files to be seen at all.
494
495dit(bf(transfer logging)) This parameter enables per-file
496logging of downloads and uploads in a format somewhat similar to that
497used by ftp daemons. The daemon always logs the transfer at the end, so
498if a transfer is aborted, no mention will be made in the log file.
499
500If you want to customize the log lines, see the "log format" parameter.
501
502dit(bf(log format)) This parameter allows you to specify the
503format used for logging file transfers when transfer logging is enabled.
504The format is a text string containing embedded single-character escape
505sequences prefixed with a percent (%) character. An optional numeric
506field width may also be specified between the percent and the escape
507letter (e.g. "bf(%-50n %8l %07p)").
508
509The default log format is "%o %h [%a] %m (%u) %f %l", and a "%t [%p] "
510is always prefixed when using the "log file" parameter.
511(A perl script that will summarize this default log format is included
512in the rsync source code distribution in the "support" subdirectory:
513rsyncstats.)
514
515The single-character escapes that are understood are as follows:
516
517quote(itemization(
518 it() %a the remote IP address
519 it() %b the number of bytes actually transferred
520 it() %B the permission bits of the file (e.g. rwxrwxrwt)
521 it() %c the total size of the block checksums received for the basis file (only when sending)
522 it() %C the full-file MD5 checksum if bf(--checksum) is enabled or a file was transferred (only for protocol 30 or above).
523 it() %f the filename (long form on sender; no trailing "/")
524 it() %G the gid of the file (decimal) or "DEFAULT"
525 it() %h the remote host name
526 it() %i an itemized list of what is being updated
527 it() %l the length of the file in bytes
528 it() %L the string " -> SYMLINK", " => HARDLINK", or "" (where bf(SYMLINK) or bf(HARDLINK) is a filename)
529 it() %m the module name
530 it() %M the last-modified time of the file
531 it() %n the filename (short form; trailing "/" on dir)
532 it() %o the operation, which is "send", "recv", or "del." (the latter includes the trailing period)
533 it() %p the process ID of this rsync session
534 it() %P the module path
535 it() %t the current date time
536 it() %u the authenticated username or an empty string
537 it() %U the uid of the file (decimal)
538))
539
540For a list of what the characters mean that are output by "%i", see the
541bf(--itemize-changes) option in the rsync manpage.
542
543Note that some of the logged output changes when talking with older
544rsync versions. For instance, deleted files were only output as verbose
545messages prior to rsync 2.6.4.
546
547dit(bf(timeout)) This parameter allows you to override the
548clients choice for I/O timeout for this module. Using this parameter you
549can ensure that rsync won't wait on a dead client forever. The timeout
550is specified in seconds. A value of zero means no timeout and is the
551default. A good choice for anonymous rsync daemons may be 600 (giving
552a 10 minute timeout).
553
554dit(bf(refuse options)) This parameter allows you to
555specify a space-separated list of rsync command line options that will
556be refused by your rsync daemon.
557You may specify the full option name, its one-letter abbreviation, or a
558wild-card string that matches multiple options.
559For example, this would refuse bf(--checksum) (bf(-c)) and all the various
560delete options:
561
562quote(tt( refuse options = c delete))
563
564The reason the above refuses all delete options is that the options imply
565bf(--delete), and implied options are refused just like explicit options.
566As an additional safety feature, the refusal of "delete" also refuses
567bf(remove-source-files) when the daemon is the sender; if you want the latter
568without the former, instead refuse "delete-*" -- that refuses all the
569delete modes without affecting bf(--remove-source-files).
570
571When an option is refused, the daemon prints an error message and exits.
572To prevent all compression when serving files,
573you can use "dont compress = *" (see below)
574instead of "refuse options = compress" to avoid returning an error to a
575client that requests compression.
576
577dit(bf(dont compress)) This parameter allows you to select
578filenames based on wildcard patterns that should not be compressed
579when pulling files from the daemon (no analogous parameter exists to
580govern the pushing of files to a daemon).
581Compression is expensive in terms of CPU usage, so it
582is usually good to not try to compress files that won't compress well,
583such as already compressed files.
584
585The "dont compress" parameter takes a space-separated list of
586case-insensitive wildcard patterns. Any source filename matching one
587of the patterns will not be compressed during transfer.
588
589See the bf(--skip-compress) parameter in the bf(rsync)(1) manpage for the list
590of file suffixes that are not compressed by default. Specifying a value
591for the "dont compress" parameter changes the default when the daemon is
592the sender.
593
594dit(bf(pre-xfer exec), bf(post-xfer exec)) You may specify a command to be run
595before and/or after the transfer. If the bf(pre-xfer exec) command fails, the
596transfer is aborted before it begins.
597
598The following environment variables will be set, though some are
599specific to the pre-xfer or the post-xfer environment:
600
601quote(itemization(
602 it() bf(RSYNC_MODULE_NAME): The name of the module being accessed.
603 it() bf(RSYNC_MODULE_PATH): The path configured for the module.
604 it() bf(RSYNC_HOST_ADDR): The accessing host's IP address.
605 it() bf(RSYNC_HOST_NAME): The accessing host's name.
606 it() bf(RSYNC_USER_NAME): The accessing user's name (empty if no user).
607 it() bf(RSYNC_PID): A unique number for this transfer.
608 it() bf(RSYNC_REQUEST): (pre-xfer only) The module/path info specified
609 by the user (note that the user can specify multiple source files,
610 so the request can be something like "mod/path1 mod/path2", etc.).
611 it() bf(RSYNC_ARG#): (pre-xfer only) The pre-request arguments are set
612 in these numbered values. RSYNC_ARG0 is always "rsyncd", and the last
613 value contains a single period.
614 it() bf(RSYNC_EXIT_STATUS): (post-xfer only) the server side's exit value.
615 This will be 0 for a successful run, a positive value for an error that the
616 server generated, or a -1 if rsync failed to exit properly. Note that an
617 error that occurs on the client side does not currently get sent to the
618 server side, so this is not the final exit status for the whole transfer.
619 it() bf(RSYNC_RAW_STATUS): (post-xfer only) the raw exit value from code(waitpid()).
620))
621
622Even though the commands can be associated with a particular module, they
623are run using the permissions of the user that started the daemon (not the
624module's uid/gid setting) without any chroot restrictions.
625
626enddit()
627
628manpagesection(CONFIG DIRECTIVES)
629
630There are currently two config directives available that allow a config file to
631incorporate the contents of other files: bf(&include) and bf(&merge). Both
632allow a reference to either a file or a directory. They differ in how
633segregated the file's contents are considered to be.
634
635The bf(&include) directive treats each file as more distinct, with each one
636inheriting the defaults of the parent file, starting the parameter parsing
637as globals/defaults, and leaving the defaults unchanged for the parsing of
638the rest of the parent file.
639
640The bf(&merge) directive, on the other hand, treats the file's contents as
641if it were simply inserted in place of the directive, and thus it can set
642parameters in a module started in another file, can affect the defaults for
643other files, etc.
644
645When an bf(&include) or bf(&merge) directive refers to a directory, it will read
646in all the bf(*.conf) files contained inside that directory (without any
647recursive scanning), with the files sorted into alpha order. So, if you have a
648directory named "rsyncd.d" with the files "foo.conf", "bar.conf", and
649"baz.conf" inside it, this directive:
650
651verb( &include /path/rsyncd.d )
652
653would be the same as this set of directives:
654
655verb( &include /path/rsyncd.d/bar.conf
656 &include /path/rsyncd.d/baz.conf
657 &include /path/rsyncd.d/foo.conf )
658
659except that it adjusts as files are added and removed from the directory.
660
661The advantage of the bf(&include) directive is that you can define one or more
662modules in a separate file without worrying about unintended side-effects
663between the self-contained module files. For instance, this is a useful
664/etc/rsyncd.conf file:
665
666verb( port = 873
667 log file = /var/log/rsync.log
668 pid file = /var/lock/rsync.lock
669
670 &include /etc/rsyncd.d )
671
672The advantage of the bf(&merge) directive is that you can load config snippets
673that can be included into multiple module definitions.
674
675manpagesection(AUTHENTICATION STRENGTH)
676
677The authentication protocol used in rsync is a 128 bit MD4 based
678challenge response system. This is fairly weak protection, though (with
679at least one brute-force hash-finding algorithm publicly available), so
680if you want really top-quality security, then I recommend that you run
681rsync over ssh. (Yes, a future version of rsync will switch over to a
682stronger hashing method.)
683
684Also note that the rsync daemon protocol does not currently provide any
685encryption of the data that is transferred over the connection. Only
686authentication is provided. Use ssh as the transport if you want
687encryption.
688
689Future versions of rsync may support SSL for better authentication and
690encryption, but that is still being investigated.
691
692manpagesection(EXAMPLES)
693
694A simple rsyncd.conf file that allow anonymous rsync to a ftp area at
695tt(/home/ftp) would be:
696
697verb(
698[ftp]
699 path = /home/ftp
700 comment = ftp export area
701)
702
703A more sophisticated example would be:
704
705verb(
706uid = nobody
707gid = nobody
708use chroot = yes
709max connections = 4
710syslog facility = local5
711pid file = /var/run/rsyncd.pid
712
713[ftp]
714 path = /var/ftp/./pub
715 comment = whole ftp area (approx 6.1 GB)
716
717[sambaftp]
718 path = /var/ftp/./pub/samba
719 comment = Samba ftp area (approx 300 MB)
720
721[rsyncftp]
722 path = /var/ftp/./pub/rsync
723 comment = rsync ftp area (approx 6 MB)
724
725[sambawww]
726 path = /public_html/samba
727 comment = Samba WWW pages (approx 240 MB)
728
729[cvs]
730 path = /data/cvs
731 comment = CVS repository (requires authentication)
732 auth users = tridge, susan
733 secrets file = /etc/rsyncd.secrets
734)
735
736The /etc/rsyncd.secrets file would look something like this:
737
738quote(
739tt(tridge:mypass)nl()
740tt(susan:herpass)nl()
741)
742
743manpagefiles()
744
745/etc/rsyncd.conf or rsyncd.conf
746
747manpageseealso()
748
749bf(rsync)(1)
750
751manpagediagnostics()
752
753manpagebugs()
754
755Please report bugs! The rsync bug tracking system is online at
756url(http://rsync.samba.org/)(http://rsync.samba.org/)
757
758manpagesection(VERSION)
759
760This man page is current for version 3.0.3 of rsync.
761
762manpagesection(CREDITS)
763
764rsync is distributed under the GNU public license. See the file
765COPYING for details.
766
767The primary ftp site for rsync is
768url(ftp://rsync.samba.org/pub/rsync)(ftp://rsync.samba.org/pub/rsync).
769
770A WEB site is available at
771url(http://rsync.samba.org/)(http://rsync.samba.org/)
772
773We would be delighted to hear from you if you like this program.
774
775This program uses the zlib compression library written by Jean-loup
776Gailly and Mark Adler.
777
778manpagesection(THANKS)
779
780Thanks to Warren Stanley for his original idea and patch for the rsync
781daemon. Thanks to Karsten Thygesen for his many suggestions and
782documentation!
783
784manpageauthor()
785
786rsync was written by Andrew Tridgell and Paul Mackerras.
787Many people have later contributed to it.
788
789Mailing lists for support and development are available at
790url(http://lists.samba.org)(lists.samba.org)