Tftpd

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

TFTP (Trivial File Transfer Protocol) - очень простой протокол передачи файлов, нет аутентификации, нет поддержки каталогов, нет листинга файлов

CentOS 7

TFTP сервер на базе xinetd, позволяет забирать файлы, позволяет принимать файлы, в том числе не существующие.

yum install tftp-server xinetd

useradd --no-create-home -s /sbin/nologin tftpd
chown tftpd:tftpd /var/lib/tftpboot
chmod 777 /var/lib/tftpboot

vi /etc/xinetd.d/tftp

# правим строки
 server_args = -c -p -u tftpd -U 111 -s /var/lib/tftpboot
 disable = no

# описание по опциям можно посмотреть так
# man tftpd

systemctl enable xinetd
systemctl enable tftp

systemctl start xinetd
systemctl start tftp

firewall-cmd --zone=public --add-service=tftp --permanent
firewall-cmd --reload
firewall-cmd --list-all

Ubuntu 20.04

TFTP сервер на базе xinetd, позволяет забирать файлы, позволяет принимать только существующие файлы. Чтобы принять файл, нужно в рабочем каталоге сервиса предварительно создать пустой файл с тем же именем.

sudo apt-get install tftpd

useradd --no-create-home -s /sbin/nologin tftpd
mkdir /var/lib/tftpboot
chown tftpd:tftpd /var/lib/tftpboot
chmod 777 /var/lib/tftpboot

Конфигурация сервиса tftp

Определение сервиса можно задать в файле /etc/inetd.conf, при этом необходимо убедиться, что файла /etc/xinetd.d/tftp либо нет, либо определение сервиса в нем выключено.

nano /etc/inetd.conf
# Находим строку
tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp
# Меняем пользователя и рабочий каталог
tftp            dgram   udp     wait    tftpd   /usr/sbin/tcpd  /usr/sbin/in.tftpd /var/lib/tftpboot

Есть другой способ конфигурации сервиса tftp, при его использовании в файле /etc/inetd.conf необходимо закоментировать строку его определения.

nano /etc/xinetd.d/tftp
service tftp
{
  protocol        = udp
  port            = 69
  socket_type     = dgram
  wait            = yes
  user            = tftpd
  server          = /usr/sbin/in.tftpd
  server_args     = /var/lib/tftpboot
  disable         = no
}

После конфигурации сервиса tftp, необходимо перезапустить сервис xinetd

systemctl restart xinetd