Buenas a todos amigos.
Si llegaste a este post, es porque te diste cuenta que crear un Servidor TFTP en Linux no es tan fácil como parece ser. Hay que configurar ciertos parámetros y dar permisología para que funcione correctamente.
Para los que no recuerden, TFTP es un protocolo (Trivial File Transfer Protocol) usado muchísimo en redes para básicamente transferir archivos de un terminal a otro, ya sea, Switch, Router, Servidor, Biometricos, teléfonos IP, etc. Usa el puerto 69 UDP. A diferencia de FTP, en TFTP no hay manera de listar archivos o revisar directorios, entre otras cosas.
No deberían tener problema con este post en Debian o Ubuntu y sus derivados (Linux Mint, Xubuntu, etc.) en RedHat, CentOS o Fedora, hay que cambiar algunos comandos.
Empecemos:
Paso 1 - Instalación de aplicaciones y herramientas.
tftp (opcional): Con esto instalamos el cliente "tftp" Lo utilizaremos para verificar que nuestro servidor funciona.
tftpd-hpa: Este es nuestro demonio tftpd, el que se encargará de realizar el trabajo. Es una versión mejorada del actual tftpd. En lo personal, este me ha servido muy bien. Pueden investigar otro como ATFTPD igual de bueno.
xinetd (opcional): Es un demonio que controlará el acceso al servicio tftp. Es opcional, en algunos caso, no sera neceserio su instalación. El tftp se puede gestionar mediante el propio Inet del sistema o simplemente se corre como demonio con un script de inicio.
En este caso, lo ejecutaremos simplemente como un demonio con un script de inicio, lo dejo para que lo instalen a su gusto.
Paso 2 - Parámetros de configuración de tftpd-hpa
Asegurarse que quede configurado de esta manera:

Aquí estamos colocando el nombre de usuario para nuestro servicio tftp, estamos definiendo el directorio principal para la carga y descarga de los archivos mediante el servicio y también definimos que cualquier dirección IP remota pueda utilizar el servicio tftp a través del puerto 69.
El parámetro "--secure" es recomendado para añadir algo de seguridad a la transferencia y por compatibilidad. Y el parámetro "--create", permite que los clientes remotos puedan crear archivos en el servidor (put).
El parametro "RUN_DAEMON="yes", es el que nos permitirá iniciar tftpd como un demonio, sin requerir los servicios de inet ni xinetd. En caso contrario, se coloca el parametro así: RUN_DAEMON="no", pero tendrian que modificar el archivo de configuración de inet o xinetd.
Paso 3 - Creación de directorio y permisología
Procedemos a crear el directorio tftp mediante:
Tenemos que asignarles permisos al directorio, esto va a variar dependiendo de los requerimientos de cada quien, pero en este caso daremos permiso total mediante:
Procedemos a asignar el directorio al usuario tftp y al grupo tftp
---->Si les llega a dar error, realizar: sudo adduser tftp tftp y después volver a aplicar el comando anterior
Paso 4 - Reiniciar Servicios
---->Si el comando les da error prueben con: service xinetd restart y service tftpd-hpa restart o reinicien el equipo.
Paso 5 - Probar el servidor
Para comprobar si realmente está activo nuestro servidor tftp, vamos a probarlo con el cliente que instalamos en un principio.
Pueden abrir un terminal y entrar a un directorio por ejemplo: "cd Escritorio/" y crear un archivo de prueba, ejemplo: "hostname > prueba1.txt" posteriormente se les creará un archivo en su escritorio.
Ahora solo nos queda probar el servidor, subiendo el archivo de prueba al directorio tftp mediante:
Tienen que ejecutar el tftp en el directorio donde se encuentra el archivo ó especificar la ruta completa.
Si obtienen como resultado: Sent XX bytes in X.X seconds
Pues a celebrar, está funcionando.
Si llegaste a este post, es porque te diste cuenta que crear un Servidor TFTP en Linux no es tan fácil como parece ser. Hay que configurar ciertos parámetros y dar permisología para que funcione correctamente.
Para los que no recuerden, TFTP es un protocolo (Trivial File Transfer Protocol) usado muchísimo en redes para básicamente transferir archivos de un terminal a otro, ya sea, Switch, Router, Servidor, Biometricos, teléfonos IP, etc. Usa el puerto 69 UDP. A diferencia de FTP, en TFTP no hay manera de listar archivos o revisar directorios, entre otras cosas.
No deberían tener problema con este post en Debian o Ubuntu y sus derivados (Linux Mint, Xubuntu, etc.) en RedHat, CentOS o Fedora, hay que cambiar algunos comandos.
Empecemos:
Paso 1 - Instalación de aplicaciones y herramientas.
sudo apt-get install tftp tftpd-hpa xinetd
tftp (opcional): Con esto instalamos el cliente "tftp" Lo utilizaremos para verificar que nuestro servidor funciona.
tftpd-hpa: Este es nuestro demonio tftpd, el que se encargará de realizar el trabajo. Es una versión mejorada del actual tftpd. En lo personal, este me ha servido muy bien. Pueden investigar otro como ATFTPD igual de bueno.
xinetd (opcional): Es un demonio que controlará el acceso al servicio tftp. Es opcional, en algunos caso, no sera neceserio su instalación. El tftp se puede gestionar mediante el propio Inet del sistema o simplemente se corre como demonio con un script de inicio.
En este caso, lo ejecutaremos simplemente como un demonio con un script de inicio, lo dejo para que lo instalen a su gusto.
Paso 2 - Parámetros de configuración de tftpd-hpa
sudo nano /etc/default/tftpd-hpa
Asegurarse que quede configurado de esta manera:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
RUN_DAEMON="yes"
OPTIONS="-c -l -s /var/lib/tftpboot"

Aquí estamos colocando el nombre de usuario para nuestro servicio tftp, estamos definiendo el directorio principal para la carga y descarga de los archivos mediante el servicio y también definimos que cualquier dirección IP remota pueda utilizar el servicio tftp a través del puerto 69.
El parámetro "--secure" es recomendado para añadir algo de seguridad a la transferencia y por compatibilidad. Y el parámetro "--create", permite que los clientes remotos puedan crear archivos en el servidor (put).
El parametro "RUN_DAEMON="yes", es el que nos permitirá iniciar tftpd como un demonio, sin requerir los servicios de inet ni xinetd. En caso contrario, se coloca el parametro así: RUN_DAEMON="no", pero tendrian que modificar el archivo de configuración de inet o xinetd.
Paso 3 - Creación de directorio y permisología
Procedemos a crear el directorio tftp mediante:
sudo mkdir /var/lib/tftpboot
Tenemos que asignarles permisos al directorio, esto va a variar dependiendo de los requerimientos de cada quien, pero en este caso daremos permiso total mediante:
sudo chmod -R 777 /var/lib/tftpboot
Procedemos a asignar el directorio al usuario tftp y al grupo tftp
sudo chown -R tftp:tftp /var/lib/tftpboot
---->Si les llega a dar error, realizar: sudo adduser tftp tftp y después volver a aplicar el comando anterior
Paso 4 - Reiniciar Servicios
sudo /etc/init.d/tftpd-hpa
restart
sudo /etc/init.d/xinetd
restart
---->Si el comando les da error prueben con: service xinetd restart y service tftpd-hpa restart o reinicien el equipo.
Paso 5 - Probar el servidor
Para comprobar si realmente está activo nuestro servidor tftp, vamos a probarlo con el cliente que instalamos en un principio.
Pueden abrir un terminal y entrar a un directorio por ejemplo: "cd Escritorio/" y crear un archivo de prueba, ejemplo: "hostname > prueba1.txt" posteriormente se les creará un archivo en su escritorio.
Ahora solo nos queda probar el servidor, subiendo el archivo de prueba al directorio tftp mediante:
tftp 127.0.0.1
put prueba1.txt
Tienen que ejecutar el tftp en el directorio donde se encuentra el archivo ó especificar la ruta completa.
Si obtienen como resultado: Sent XX bytes in X.X seconds
Pues a celebrar, está funcionando.