TFTP or Trivial File Transfer Protocol is a transfer protocol notable for its simplicity. TFTP is generally used for automated transfer of configuration or boot files between machines in a local environment, such as routers and PXE (Preboot eXecution Environment) mechanism. Compared to FTP, TFTP is extremely limited, providing no authentication and is rarely used interactively by a user.
There are many TFTP implementations, such as:
- GNU inetutils
In this article, we will discuss about how to set Slackware as a basic TFTP server. In specific, we will use tftp-hpa which is included by default. This article is tested using Slackware64 14.0 and tftp-hpa.
Upgrade or Not?
Slackware has shipped a TFTP server by default which is tftp-hpa. The version is 0.49. However we can install the latest tftp-hpa with simple process. If you decided to install the latest version, follow this section. Otherwise you can skip to next section.
Download the latest version of tftp-hpa here: www.kernel.org/pub/software/network/tftp/tftp-hpa/. The latest version is 5.2 which can be downloaded here: www.kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-5.2.tar.xz
Now invoke following series of command to build TFTP (server and client):
tar -Jxf tftp-hpa-5.2.tar.xz cd tftp-hpa-5.2 ./configure --prefix=/usr make cd tftp && strip --strip-unneeded tftp cd ../tftpd && strip --strip-unneeded tftpd cd ..
Now install it (make sure you are using root privileges):
By default, the inetd use /tftpboot directory as root directory of the TFTP server. We can however change the directory to something else. Make sure the directory exists, whichever directory you use.
Suppose we want to use /usr/local/tftpboot as root directory:
mkdir -p /usr/local/tftpboot
Then we give a proper permission:
chmod +777 /usr/local/tftpboot chown nobody /usr/local/tftpboot
Next we add the following entry to the /etc/inetd.conf file as a single line. Or you can edit it and make sure it’s uncommented.
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /usr/local/tftpboot -r blksize
Then, restart the inetd using root privileges.
Now, let’s testing our TFTP server. In our simple scenario, we will create a plain text and fill something there. Then we will download it via tftp.
echo "Xathrya was testing the TFTP server" >> /usr/local/tftpboot/test.txt
To download it, use:
tftp 127.0.0.1 -c get test.txt
And see in current directory, whether we have successfully download it:
It should print out “Xathrya was testing the TFTP server”.ftp, linux, slackware