Home | History | Annotate | Download | only in doc
      1 <refentry id="tftpd">
      2 
      3 <refmeta>
      4 <refentrytitle>tftpd</refentrytitle>
      5 <manvolnum>8</manvolnum>
      6 <refmiscinfo>iputils-&snapshot;</refmiscinfo>
      7 </refmeta>
      8 
      9 <refnamediv>
     10 <refname>tftpd</refname>
     11 <refpurpose>Trivial File Transfer Protocol server</refpurpose>
     12 </refnamediv>
     13 
     14 <refsynopsisdiv>
     15 <cmdsynopsis>
     16 <command>tftpd</command>
     17 <arg choice="req"><replaceable/directory/</arg>
     18 </cmdsynopsis>
     19 </refsynopsisdiv>
     20 
     21 <refsect1><title>DESCRIPTION</title>
     22 <para>
     23 <command/tftpd/ is a server which supports the DARPA
     24 Trivial File Transfer Protocol
     25 (<ulink url="http://tools.ietf.org/rfc/rfc1350.txt">RFC1350</ulink>).
     26 The TFTP server is started
     27 by <citerefentry><refentrytitle/inetd/<manvolnum/8/</citerefentry>.
     28 </para>
     29 
     30 <para>
     31 <replaceable/directory/ is required argument; if it is not given
     32 <command/tftpd/ aborts. This path is prepended to any file name requested
     33 via TFTP protocol, effectively chrooting <command/tftpd/ to this directory.
     34 File names are validated not to escape out of this directory, however
     35 administrator may configure such escape using symbolic links.
     36 </para>
     37 
     38 <para>
     39 It is in difference of variants of <command/tftpd/ usually distributed
     40 with unix-like systems, which take a list of directories and match
     41 file names to start from one of given prefixes or to some random
     42 default, when no arguments were given. There are two reasons not to
     43 behave in this way: first, it is inconvenient, clients are not expected
     44 to know something about layout of filesystem on server host.
     45 And second, TFTP protocol is not a tool for browsing of server's filesystem,
     46 it is just an agent allowing to boot dumb clients. 
     47 </para>
     48 
     49 <para>
     50 In the case when <command/tftpd/ is used together with
     51 <link linkend="rarpd">
     52 <citerefentry><refentrytitle/rarpd/<manvolnum/8/</citerefentry></link>,
     53 tftp directories in these services should coincide and it is expected
     54 that each client booted via TFTP has boot image corresponding
     55 its IP address with an architecture suffix following Sun Microsystems
     56 conventions. See 
     57 <link linkend="rarpd">
     58 <citerefentry><refentrytitle/rarpd/<manvolnum/8/</citerefentry></link>
     59 for more details.
     60 </para>
     61 </refsect1>
     62 
     63 <refsect1><title>SECURITY</title>
     64 <para>
     65 TFTP protocol does not provide any authentication.
     66 Due to this capital flaw <command/tftpd/ is not able to restrict
     67 access to files and will allow only publically readable
     68 files to be accessed. Files may be written only if they already
     69 exist and are publically writable.
     70 </para>
     71 
     72 <para>
     73 Impact is evident, directory exported via TFTP <emphasis/must not/
     74 contain sensitive information of any kind, everyone is allowed
     75 to read it as soon as a client is allowed. Boot images do not contain
     76 such information as rule, however you should think twice before
     77 publishing f.e. Cisco IOS config files via TFTP, they contain
     78 <emphasis/unencrypted/ passwords and may contain some information
     79 about the network, which you were not going to make public.
     80 </para>
     81 
     82 <para>
     83 The <command/tftpd/ server should be executed by <command/inetd/
     84 with dropped root privileges, namely with a user ID giving minimal
     85 access to files published in tftp directory. If it is executed
     86 as superuser occasionally, <command/tftpd/ drops its UID and GID
     87 to 65534, which is most likely not the thing which you expect.
     88 However, this is not very essential; remember, only files accessible
     89 for everyone can be read or written via TFTP.
     90 </para>
     91 
     92 </refsect1>
     93 
     94 
     95 <refsect1><title>SEE ALSO</title>
     96 <para>
     97 <link linkend="rarpd">
     98 <citerefentry><refentrytitle/rarpd/<manvolnum/8/</citerefentry></link>,
     99 <citerefentry><refentrytitle/tftp/<manvolnum/1/</citerefentry>,
    100 <citerefentry><refentrytitle/inetd/<manvolnum/8/</citerefentry>.
    101 </para>
    102 </refsect1>
    103 
    104 <refsect1><title>HISTORY</title>
    105 <para>
    106 The <command/tftpd/ command appeared in 4.2BSD. The source in iputils
    107 is cleaned up both syntactically (ANSIized) and semantically (UDP socket IO).
    108 </para>
    109 <para>
    110 It is distributed with iputils mostly as good demo of an interesting feature
    111 (<constant/MSG_CONFIRM/) allowing to boot long images by dumb clients
    112 not answering ARP requests until they are finally booted.
    113 However, this is full functional and can be used in production.
    114 </para>
    115 </refsect1>
    116 
    117 
    118 <refsect1><title>AVAILABILITY</title>
    119 <para>
    120 <command/tftpd/ is part of <filename/iputils/ package
    121 and the latest versions are  available in source form at
    122 <ulink url="http://www.skbuff.net/iputils/iputils-current.tar.bz2">
    123 http://www.skbuff.net/iputils/iputils-current.tar.bz2</ulink>.
    124 </para>
    125 </refsect1>
    126 
    127 
    128 <![IGNORE[
    129 <refsect1><title>COPYING</title>
    130 <para>
    131 <literallayout>
    132 This documentation is free software; you can redistribute
    133 it and/or modify it under the terms of the GNU General Public
    134 License Version 2.
    135 
    136 This program is distributed in the hope that it will be
    137 useful, but WITHOUT ANY WARRANTY; without even the implied
    138 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    139 See the GNU General Public License for more details.
    140  
    141 For more details see the file COPYING in the source
    142 distribution of Linux kernel of version 2.4.
    143 </literallayout>
    144 </literallayout>
    145 </para>
    146 </refsect1>
    147 ]]>
    148 
    149 
    150 
    151 </refentry>
    152