Настройка TFTP-сервера на Debian

Устанавливаем пакеты:

#apt-get install tftpd tftp

После установки открываем конфигурационный файл суперсервера inetd:

#nano /etc/inetd.conf
tftp    dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp

Видим, что сервис tftpd запускается с правами пользователя nobody.
Создаем директорию «куда» демон хранит файлы:

#mkdir /srv/tftp 

Проверяем запущен ли демон:

 
#netstat -lnp | grep :69 
udp        0      0 0.0.0.0:69        0.0.0.0:*             5557/inetd

Проверяем, от какого пользователя запущен процесс:

#ps uax | grep inetd
root      5557  0.0  0.1   2056   656 ?        Ss   12:52   0:00 /usr/sbin/inetd
root      5636  0.0  0.1   3576   788 pts/1    S+   13:08   0:00 grep inetd

Или так:

#lsof -i |grep tftp
inetd     5557     root    4u  IPv4  16127      0t0  UDP *:tftp

Ага, супердемон inetd работает c правами пользователя root, но при запросе UDP:67 передает управление сервису tftp c правами пользователя nobody.

Меняем права доступа к директории и обладателя директории на пользователя nobody:

 #chown nobody:nogroup -R /srv
 #chmod 0770 -R /srv
 

Рестартим inetd:

#/etc/init.d/openbsd-inetd restart 

Создаем файл для тестирования c нужными правами:

#echo This is test file > /srv/tftp/test && chown nobody:nogroup  /srv/tftpt/test
     && chmod 0660 /srv/tftpt/test 

Этот файл теперь можно скопировать и писать в этот файл.

NOTE: Особенность tftp - не требует паролей, но может писать только в уже существующие файлы с замещением содержимого.

С Windows-машины пробуем:

tftp -i 192.168.3.80 get test // забираем файл
tftp -i 192.168.3.80 put test c:\win-test.txt // записываем в существующий файл

Для ограничения доступа:

#echo in.tftpd: LAC-Capito, 192.168.3.1, 192.168.1.120 > /etc/host.allow 
#echo in.tftpd: ALL > /etc/host.deny

Всё, пользуемся сервисом.

08.05.2014




Яндекс.Метрика