in.tftpd (8) Linux Manual Page
tftpd – Trivial File Transfer Protocol server
Synopsis
in.tftpd [options…] directory…
Description
tftpd is a server for the Trivial File Transfer Protocol. The TFTP protocol is extensively used to support remote booting of diskless devices. The server is normally started by inetd, but can also run standalone.
Options
–ipv4,-4- Connect with IPv4 only, even if IPv6 support was compiled in.
–ipv6,-6- Connect with IPv6 only, if compiled in.
-l,–listen- Run the server in standalone (listen) mode, rather than run from
inetd. In listen mode, the–timeoutoption is ignored, and the–addressoption can be used to specify a specific local address or port to listen to. –foreground,-L- Similar to
–listenbut do not detach from the foreground process. Implies–listen. –address[address][:port],-a[address][:port]- Specify a specific address and port to listen to when called with the
–listenor–foregroundoption. The default is to listen to the tftp port specified in /etc/services on all local addresses.Please note:Numeric IPv6 adresses must be enclosed in square brackets to avoid ambiguity with the optional port information. –create,-c- Allow new files to be created. By default,
tftpdwill only allow upload of files that already exist. Files are created with default permissions allowing anyone to read or write them, unless the–permissiveor–umaskoptions are specified. –secure,-s- Change root directory on startup. This means the remote host does not need to pass along the directory as part of the transfer, and may add security. When
–secureis specified, exactly one directory should be specified on the command line. The use of this option is recommended for security as well as compatibility with some boot ROMs which cannot be easily made to include a directory name in its request. –userusername,-uusername- Specify the username which
tftpdwill run as; the default is "nobody". The user ID, group ID, and (if possible on the platform) the supplementary group IDs will be set to the ones specified in the system permission database for this username. –umaskumask,-Uumask- Sets the umask for newly created files to the specified value. The default is zero (anyone can read or write) if the
–permissiveoption is not specified, or inherited from the invoking process if–permissiveis specified. –permissive,-p- Perform no additional permissions checks above the normal system-provided access controls for the user specified via the
–useroption. –pidfilepidfile,-Ppidfile- When run in standalone mode, write the process ID of the listening server into pidfile. On normal termination (SIGTERM or SIGINT) the pid file is automatically removed.
–timeouttimeout,-ttimeout- When run from
inetdthis specifies how long, in seconds, to wait for a second connection before terminating the server.inetdwill then respawn the server when another request comes in. The default is 900 (15 minutes.) –retransmittimeout,-Ttimeout- Determine the default timeout, in microseconds, before the first packet is retransmitted. This can be modified by the client if the
timeoutorutimeoutoption is negotiated. The default is 1000000 (1 second.) –map-fileremap-file,-mremap-file- Specify the use of filename remapping. The remap-file is a file containing the remapping rules. See the section on filename remapping below. This option may not be compiled in, see the output of
in.tftpd -Vto verify whether or not it is available. –verbose,-v- Increase the logging verbosity of
tftpd. This flag can be specified multiple times for even higher verbosity. –verbosityvalue- Set the verbosity value to value.
–refusetftp-option,-rtftp-option- Indicate that a specific RFC 2347 TFTP option should never be accepted.
–blocksizemax-block-size,-Bmax-block-size- Specifies the maximum permitted block size. The permitted range for this parameter is from 512 to 65464. Some embedded clients request large block sizes and yet do not handle fragmented packets correctly; for these clients, it is recommended to set this value to the smallest MTU on your network minus 32 bytes (20 bytes for IP, 8 for UDP, and 4 for TFTP; less if you use IP options on your network.) For example, on a standard Ethernet (MTU 1500) a value of 1468 is reasonable.
–port-rangeport:port,-Rport:port- Force the server port number (the Transaction ID) to be in the specified range of port numbers.
–version,-V- Print the version number and configuration to standard output, then exit gracefully.
Rfc 2347 Option Negotiation
This version of tftpd supports RFC 2347 option negotation. Currently implemented options are:
blksize(RFC 2348)- Set the transfer block size to anything less than or equal to the specified option. This version of
tftpdcan support any block size up to the theoretical maximum of 65464 bytes. blksize2(nonstandard)- Set the transfer block size to anything less than or equal to the specified option, but restrict the possible responses to powers of 2. The maximum is 32768 bytes (the largest power of 2 less than or equal to 65464.)
tsize(RFC 2349)- Report the size of the file that is about to be transferred. This version of
tftpdonly supports thetsizeoption for binary (octet) mode transfers. timeout(RFC 2349)- Set the time before the server retransmits a packet, in seconds.
utimeout(nonstandard)- Set the time before the server retransmits a packet, in microseconds.
rollover(nonstandard)- Set the block number to resume at after a block number rollover. The default and recommended value is zero.
The –refuse option can be used to disable specific options; this may be necessary to work around bugs in specific TFTP client implementations. For example, some TFTP clients have been found to request the blksize option, but crash with an error if they actually get the option accepted by the server.
Filename Remapping
The –mapfile option specifies a file which contains filename remapping rules. Each non-comment line (comments begin with hash marks, #) contains an operation, specified below; a regex, a regular expression in the style of egrep; and optionally a replacement pattern. The operation indicated by operation is performed if the regex matches all or part of the filename. Rules are processed from the top down, and by default, all rules are processed even if there is a match.
The operation can be any combination of the following letters:
r- Replace the substring matched by regex by the replacement pattern. The replacement pattern may contain escape sequences; see below.
g- Repeat this rule until it no longer matches. This is always used with
r. i- Match the regex case-insensitively. By default it is case sensitive.
e- If this rule matches, end rule processing after executing the rule.
s- If this rule matches, start rule processing over from the very first rule after executing this rule.
a- If this rule matches, refuse the request and send an access denied error to the client.
G- This rule applies to GET (RRQ) requests only.
P- This rule applies to PUT (WRQ) requests only.
~- Inverse the sense of this rule, i.e. execute the operation only if the regex doesn’t match. Cannot used together with
r.
The following escape sequences are recognized as part of the replacement pattern:
