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