tftpd.8: document IPv6 handling in remapping rules
[tftp-hpa.git] / tftpd / tftpd.8.in
blobb500d274774096ff1b020fb3f0fe2ced724c29cc
1 .\" -*- nroff -*- --------------------------------------------------------- *
2 .\"  
3 .\" Copyright (c) 1990, 1993, 1994
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
7 .\"
8 .\" Redistribution and use in source and binary forms, with or without
9 .\" modification, are permitted provided that the following conditions
10 .\" are met:
11 .\" 1. Redistributions of source code must retain the above copyright
12 .\"    notice, this list of conditions and the following disclaimer.
13 .\" 2. Redistributions in binary form must reproduce the above copyright
14 .\"    notice, this list of conditions and the following disclaimer in the
15 .\"    documentation and/or other materials provided with the distribution.
16 .\" 3. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"----------------------------------------------------------------------- */
33 .TH TFTPD 8 "7 June 2014" "tftp-hpa @@VERSION@@" "System Manager's Manual"
34 .SH NAME
35 .B tftpd
36 \- Trivial File Transfer Protocol server
37 .SH SYNOPSIS
38 .B in.tftpd
39 .RI [ options... ]
40 .I directory...
41 .SH DESCRIPTION
42 .B tftpd
43 is a server for the Trivial File Transfer Protocol.  The TFTP
44 protocol is extensively used to support remote booting of diskless
45 devices.  The server is normally started by
46 .BR inetd ,
47 but can also run standalone.
48 .PP
49 .SH OPTIONS
50 .TP
51 \fB\-\-ipv4\fP, \fB\-4\fP
52 Connect with IPv4 only, even if IPv6 support was compiled in.
53 .TP
54 \fB\-\-ipv6\fP, \fB\-6\fP
55 Connect with IPv6 only, if compiled in.
56 .TP
57 \fB\-l\fP, \fB\-\-listen\fP
58 Run the server in standalone (listen) mode, rather than run from
59 .BR inetd .
60 In listen mode, the
61 .B \-\-timeout
62 option is ignored, and the
63 .B \-\-address
64 option can be used to specify a specific local address or port to
65 listen to.
66 .TP
67 \fB\-\-foreground\fP, \fB\-L\fP
68 Similar to
69 .B \-\-listen
70 but do not detach from the foreground process.  Implies
71 .BR \-\-listen .
72 .TP
73 \fB\-\-address\fP \fI[address][:port]\fP, \fB\-a\fP \fI[address][:port]\fP
74 Specify a specific
75 .I address
76 and
77 .I port
78 to listen to when called with the
79 .B \-\-listen
81 .B \-\-foreground
82 option.  The default is to listen to the
83 .I tftp
84 port specified in
85 .I /etc/services
86 on all local addresses.
88 .B Please note:
89 Numeric IPv6 adresses must be enclosed in square brackets
90 to avoid ambiguity with the optional port information.
91 .TP
92 \fB\-\-create\fP, \fB\-c\fP
93 Allow new files to be created.  By default,
94 .B tftpd
95 will only allow upload of files that already exist.  Files are created
96 with default permissions allowing anyone to read or write them, unless
97 the
98 .B \-\-permissive
100 .B \-\-umask
101 options are specified.
103 \fB\-\-secure\fP, \fB\-s\fP
104 Change root directory on startup.  This means the remote host does not
105 need to pass along the directory as part of the transfer, and may add
106 security.  When
107 .B \-\-secure
108 is specified, exactly one
109 .I directory
110 should be specified on the command line.  The use of this option is
111 recommended for security as well as compatibility with some boot ROMs
112 which cannot be easily made to include a directory name in its request.
114 \fB\-\-user\fP \fIusername\fP, \fB\-u\fP \fIusername\fP
115 Specify the username which
116 .B tftpd
117 will run as; the default is "nobody".  The user ID, group ID, and (if
118 possible on the platform) the supplementary group IDs will be set to
119 the ones specified in the system permission database for this
120 username.
122 \fB\-\-umask\fP \fIumask\fP, \fB\-U\fP \fIumask\fP
123 Sets the \fIumask\fP for newly created files to the specified value.
124 The default is zero (anyone can read or write) if the
125 .B \-\-permissive
126 option is not specified, or inherited from the invoking process if
127 .B \-\-permissive
128 is specified.
130 \fB\-\-permissive\fP, \fB\-p\fP
131 Perform no additional permissions checks above the normal
132 system-provided access controls for the user specified via the
133 .B \-\-user
134 option.
136 \fB\-\-pidfile\fP \fIpidfile\fP, \fB\-P\fP \fIpidfile\fP
137 When run in standalone mode, write the process ID of the listening
138 server into \fIpidfile\fP.  On normal termination (SIGTERM or SIGINT)
139 the pid file is automatically removed.
141 \fB\-\-timeout\fP \fItimeout\fP, \fB\-t\fP \fItimeout\fP
142 When run from
143 .B inetd
144 this specifies how long, in seconds, to wait for a second connection
145 before terminating the server.
146 .B inetd
147 will then respawn the server when another request comes in.  The
148 default is 900 (15 minutes.)
150 \fB\-\-retransmit\fP \fItimeout, \fP\fB\-T\fP \fItimeout\fP
151 Determine the default timeout, in microseconds, before the first
152 packet is retransmitted.  This can be modified by the client if the
153 .B timeout
155 .B utimeout
156 option is negotiated.  The default is 1000000 (1 second.)
158 \fB\-\-mapfile\fP \fIremap-file\fP, \fB\-m\fP \fIremap-file\fP
159 Specify the use of filename remapping.  The
160 .I remap-file
161 is a file containing the remapping rules.  See the section on filename
162 remapping below.  This option may not be compiled in, see the output of
163 .B "in.tftpd \-V"
164 to verify whether or not it is available.
166 \fB\-\-verbose\fP, \fB\-v\fP
167 Increase the logging verbosity of
168 .BR tftpd .
169 This flag can be specified multiple times for even higher verbosity.
171 \fB\-\-verbosity\fP \fIvalue\fP
172 Set the verbosity value to \fIvalue\fP.
174 \fB\-\-refuse\fP \fItftp-option\fP, \fB\-r\fP \fItftp-option\fP
175 Indicate that a specific RFC 2347 TFTP option should never be
176 accepted.
178 \fB\-\-blocksize\fP \fImax-block-size\fP, \fB\-B\fP \fImax-block-size\fP
179 Specifies the maximum permitted block size.  The permitted range for
180 this parameter is from 512 to 65464.  Some embedded clients request
181 large block sizes and yet do not handle fragmented packets correctly;
182 for these clients, it is recommended to set this value to the smallest
183 MTU on your network minus 32 bytes (20 bytes for IP, 8 for UDP, and 4
184 for TFTP; less if you use IP options on your network.)  For example,
185 on a standard Ethernet (MTU 1500) a value of 1468 is reasonable.
187 \fB\-\-port-range\fP \fIport:port\fP, \fB\-R\fP \fIport:port\fP
188 Force the server port number (the Transaction ID) to be in the
189 specified range of port numbers.
191 \fB\-\-version\fP, \fB\-V\fP
192 Print the version number and configuration to standard output, then
193 exit gracefully.
194 .SH "RFC 2347 OPTION NEGOTIATION"
195 This version of
196 .B tftpd
197 supports RFC 2347 option negotation.  Currently implemented options
198 are:
200 \fBblksize\fP (RFC 2348)
201 Set the transfer block size to anything less than or equal to the
202 specified option.  This version of
203 .B tftpd
204 can support any block size up to the theoretical maximum of 65464
205 bytes.
207 \fBblksize2\fP (nonstandard)
208 Set the transfer block size to anything less than or equal to the
209 specified option, but restrict the possible responses to powers of 2.
210 The maximum is 32768 bytes (the largest power of 2 less than or equal
211 to 65464.)
213 \fBtsize\fP (RFC 2349)
214 Report the size of the file that is about to be transferred.  This
215 version of
216 .B tftpd
217 only supports the
218 .B tsize
219 option for binary (octet) mode transfers.
221 \fBtimeout\fP (RFC 2349)
222 Set the time before the server retransmits a packet, in seconds.
224 \fButimeout\fP (nonstandard)
225 Set the time before the server retransmits a packet, in microseconds.
227 \fBrollover\fP (nonstandard)
228 Set the block number to resume at after a block number rollover.  The
229 default and recommended value is zero.
232 .B \-\-refuse
233 option can be used to disable specific options; this may be necessary
234 to work around bugs in specific TFTP client implementations.  For
235 example, some TFTP clients have been found to request the
236 .B blksize
237 option, but crash with an error if they actually get the option
238 accepted by the server.
239 .SH "FILENAME REMAPPING"
241 .B \-\-mapfile
242 option specifies a file which contains filename remapping rules.  Each
243 non-comment line (comments begin with hash marks,
244 .BR # )
245 contains an
246 .IR operation ,
247 specified below; a
248 .IR regex ,
249 a regular expression in the style of
250 .BR egrep ;
251 and optionally a
252 .IR "replacement pattern" .
253 The operation indicated by
254 .I operation
255 is performed if the
256 .I regex
257 matches all or part of the filename.  Rules are processed from the top
258 down, and by default, all rules are processed even if there is a
259 match.
262 .I operation
263 can be any combination of the following letters:
265 .B r
266 Replace the substring matched by
267 .I regex
268 by the
269 .IR "replacement pattern" .
270 The replacement pattern may contain escape sequences; see below.
272 .B g
273 Repeat this rule until it no longer matches.  This is always used with
274 .BR r .
276 .B i
277 Match the
278 .I regex
279 case-insensitively.  By default it is case sensitive.
281 .B e
282 If this rule matches, end rule processing after executing the rule.
284 .B s
285 If this rule matches, start rule processing over from the very first
286 rule after executing this rule.
288 .B a
289 If this rule matches, refuse the request and send an access denied
290 error to the client.
292 .B G
293 This rule applies to GET (RRQ) requests only.
295 .B P
296 This rule applies to PUT (WRQ) requests only.
298 .B 4
299 This rule applies to IPv4 sessions only.
301 .B 6
302 This rule applies to IPv6 sessions only.
304 .B ~
305 Inverse the sense of this rule, i.e. execute the
306 .I operation
307 only if the
308 .I regex
309 .I doesn't
310 match.  Cannot used together with 
311 .BR r .
313 The following escape sequences are recognized as part of the
314 .IR "replacement pattern" :
316 \fB\\0\fP
317 The entire string matched by the
318 .IR regex .
320 \fB\\1\fP to \fB\\9\fP
321 The strings matched by each of the first nine parenthesized
322 subexpressions, \\( ... \\), of the
323 .I regex
324 pattern.
326 \fB\\i\fP
327 The IP address of the requesting host, in dotted-quad notation for
328 IPv4 (e.g. 192.0.2.169) or conventional colon form for IPv6
329 (e.g. 2001:db8::1).
331 \fB\\x\fP
332 The IP address of the requesting host, in expanded hexadecimal
333 notation (e.g. C00002A9 for IPv4, or 20010DB8000000000000000000000001
334 for IPv6).
336 \fB\\\\\fP
337 Literal backslash.
339 \fB\\\fP\fIwhitespace\fP
340 Literal whitespace.
342 \fB\\#\fP
343 Literal hash mark.
345 \fB\\U\fP
346 Turns all subsequent letters to upper case.
348 \fB\\L\fP
349 Turns all subsequent letters to lower case.
351 \fB\\E\fP
352 Cancels the effect of \fB\\U\fP or \fB\\L\fP.
354 If the mapping file is changed, you need to send
355 .B SIGHUP
356 to any outstanding
357 .B tftpd
358 process.
359 .SH "SECURITY"
360 The use of TFTP services does not require an account or password on
361 the server system.  Due to the lack of authentication information,
362 .B tftpd
363 will allow only publicly readable files (o+r) to be accessed, unless the
364 .B \-\-permissive
365 option is specified.  Files may be written only if they already exist
366 and are publicly writable, unless the
367 .B \-\-create
368 option is specified.  Note that this extends the concept of ``public''
369 to include all users on all hosts that can be reached through the
370 network; this may not be appropriate on all systems, and its
371 implications should be considered before enabling TFTP service.
372 Typically, some kind of firewall or packet-filter solution should be
373 employed.  If appropriately compiled (see the output of
374 .BR  "in.tftpd \-\-version" )
375 .B tftpd
376 will query the
377 .BR hosts_access (5)
378 database for access control information.  This may be slow; sites
379 requiring maximum performance may want to compile without this option
380 and rely on firewalling or kernel-based packet filters instead.
382 The server should be set to run as the user with the lowest possible
383 privilege; please see the
384 .B \-\-user
385 flag.  It is probably a good idea to set up a specific user account for
386 .BR tftpd ,
387 rather than letting it run as "nobody", to guard against privilege
388 leaks between applications.
390 Access to files can, and should, be restricted by invoking
391 .B tftpd
392 with a list of directories by including pathnames as server program
393 arguments on the command line.  In this case access is restricted to
394 files whole names are prefixed by one of the given directories.  If
395 possible, it is recommended that the
396 .B \-\-secure
397 flag is used to set up a chroot() environment for the server to run in
398 once a connection has been set up.
400 Finally, the filename remapping
401 .RB ( \-\-mapfile
402 flag) support can be used to provide a limited amount of additional
403 access control.
404 .SH "CONFORMING TO"
405 RFC 1123,
406 .IR "Requirements for Internet Hosts \- Application and Support" .
408 RFC 1350,
409 .IR "The TFTP Protocol (revision 2)" .
411 RFC 2347,
412 .IR "TFTP Option Extension" .
414 RFC 2348,
415 .IR "TFTP Blocksize Option" .
417 RFC 2349,
418 .IR "TFTP Timeout Interval and Transfer Size Options" .
419 .SH "AUTHOR"
420 This version of
421 .B tftpd
422 is maintained by H. Peter Anvin <hpa@zytor.com>.  It was derived from,
423 but has substantially diverged from, an OpenBSD source base, with
424 added patches by Markus Gutschke and Gero Kulhman.
425 .SH "SEE ALSO"
426 .BR tftp (1),
427 .BR egrep (1),
428 .BR umask (2),
429 .BR hosts_access (5),
430 .BR regex (7),
431 .BR inetd (8).