Blame doc/tftpd.xml

Packit Service 6f2e62
Packit Service 6f2e62
Packit Service 6f2e62
                   "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
Packit Service 6f2e62
Packit Service 6f2e62
<refentry id='tftpd8'>
Packit Service 6f2e62
<refmeta>
Packit Service 6f2e62
  <refentrytitle>TFTPD</refentrytitle>
Packit Service 6f2e62
  <manvolnum>8</manvolnum>
Packit Service 6f2e62
  <refmiscinfo class='manual'>iputils</refmiscinfo>
Packit Service 6f2e62
</refmeta>
Packit Service 6f2e62
<refnamediv>
Packit Service 6f2e62
  <refname>tftpd</refname>
Packit Service 6f2e62
  <refpurpose>Trivial File Transfer Protocol server</refpurpose>
Packit Service 6f2e62
</refnamediv>
Packit Service 6f2e62
Packit Service 6f2e62
<refsynopsisdiv id='synopsis'>
Packit Service 6f2e62
  <cmdsynopsis>
Packit Service 6f2e62
    <command>tftpd</command>
Packit Service 6f2e62
    <arg choice='plain'><replaceable>directory</replaceable></arg>
Packit Service 6f2e62
    <sbr/>
Packit Service 6f2e62
</cmdsynopsis>
Packit Service 6f2e62
</refsynopsisdiv>
Packit Service 6f2e62
Packit Service 6f2e62
Packit Service 6f2e62
<refsect1 id='description'>
Packit Service 6f2e62
  <title>DESCRIPTION</title>
Packit Service 6f2e62
  <para><command>tftpd</command> is a server which supports the DARPA
Packit Service 6f2e62
Trivial File Transfer Protocol (RFC1350).
Packit Service 6f2e62
The TFTP server is started by
Packit Service 6f2e62
<citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para><emphasis remap='I'>directory</emphasis> is required argument; if it is not given
Packit Service 6f2e62
<command>tftpd</command> aborts. This path is prepended to any file name requested
Packit Service 6f2e62
via TFTP protocol, effectively chrooting <command>tftpd</command> to this directory.
Packit Service 6f2e62
File names are validated not to escape out of this directory, however
Packit Service 6f2e62
administrator may configure such escape using symbolic links.</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para>It is in difference of variants of <command>tftpd</command> usually distributed
Packit Service 6f2e62
with unix-like systems, which take a list of directories and match
Packit Service 6f2e62
file names to start from one of given prefixes or to some random
Packit Service 6f2e62
default, when no arguments were given. There are two reasons not to
Packit Service 6f2e62
behave in this way: first, it is inconvenient, clients are not expected
Packit Service 6f2e62
to know something about layout of filesystem on server host.
Packit Service 6f2e62
And second, TFTP protocol is not a tool for browsing of server's filesystem,
Packit Service 6f2e62
it is just an agent allowing to boot dumb clients.</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para>In the case when <command>tftpd</command> is used together with
Packit Service 6f2e62
<citerefentry><refentrytitle>rarpd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
Packit Service 6f2e62
tftp directories in these services should coincide and it is expected
Packit Service 6f2e62
that each client booted via TFTP has boot image corresponding
Packit Service 6f2e62
its IP address with an architecture suffix following Sun Microsystems
Packit Service 6f2e62
conventions. See
Packit Service 6f2e62
<citerefentry><refentrytitle>rarpd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
Packit Service 6f2e62
for more details.</para>
Packit Service 6f2e62
</refsect1>
Packit Service 6f2e62
Packit Service 6f2e62
<refsect1 id='security'>
Packit Service 6f2e62
  <title>SECURITY</title>
Packit Service 6f2e62
  <para>TFTP protocol does not provide any authentication.
Packit Service 6f2e62
Due to this capital flaw <command>tftpd</command> is not able to restrict
Packit Service 6f2e62
access to files and will allow only publically readable
Packit Service 6f2e62
files to be accessed. Files may be written only if they already
Packit Service 6f2e62
exist and are publically writable.</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para>Impact is evident, directory exported via TFTP <emphasis remap='B'>must not</emphasis>
Packit Service 6f2e62
contain sensitive information of any kind, everyone is allowed
Packit Service 6f2e62
to read it as soon as a client is allowed. Boot images do not contain
Packit Service 6f2e62
such information as rule, however you should think twice before
Packit Service 6f2e62
publishing f.e. Cisco IOS config files via TFTP, they contain
Packit Service 6f2e62
<emphasis remap='B'>unencrypted</emphasis> passwords and may contain some information
Packit Service 6f2e62
about the network, which you were not going to make public.</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para>The <command>tftpd</command> server should be executed by <emphasis remap='B'>inetd</emphasis>
Packit Service 6f2e62
with dropped root privileges, namely with a user ID giving minimal
Packit Service 6f2e62
access to files published in tftp directory. If it is executed
Packit Service 6f2e62
as superuser occasionally, <command>tftpd</command> drops its UID and GID
Packit Service 6f2e62
to 65534, which is most likely not the thing which you expect.
Packit Service 6f2e62
However, this is not very essential; remember, only files accessible
Packit Service 6f2e62
for everyone can be read or written via TFTP.</para>
Packit Service 6f2e62
</refsect1>
Packit Service 6f2e62
Packit Service 6f2e62
<refsect1 id='see_also'>
Packit Service 6f2e62
  <title>SEE ALSO</title>
Packit Service 6f2e62
  <para><citerefentry><refentrytitle>rarpd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
Packit Service 6f2e62
<citerefentry><refentrytitle>tftp</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
Packit Service 6f2e62
<citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
Packit Service 6f2e62
</refsect1>
Packit Service 6f2e62
Packit Service 6f2e62
<refsect1 id='history'>
Packit Service 6f2e62
  <title>HISTORY</title>
Packit Service 6f2e62
  <para>The <command>tftpd</command> command appeared in 4.2BSD. The source in iputils
Packit Service 6f2e62
is cleaned up both syntactically (ANSIized) and semantically (UDP socket IO).</para>
Packit Service 6f2e62
Packit Service 6f2e62
<para>It is distributed with iputils mostly as good demo of an interesting feature
Packit Service 6f2e62
(MSG_CONFIRM) allowing to boot long images by dumb clients
Packit Service 6f2e62
not answering ARP requests until they are finally booted.
Packit Service 6f2e62
However, this is full functional and can be used in production.</para>
Packit Service 6f2e62
</refsect1>
Packit Service 6f2e62
Packit Service 6f2e62
<refsect1 id='availability'>
Packit Service 6f2e62
  <title>AVAILABILITY</title>
Packit Service 6f2e62
  <para><command>tftpd</command> is part of <emphasis remap='I'>iputils</emphasis> package.</para>
Packit Service 6f2e62
</refsect1>
Packit Service 6f2e62
</refentry>