Команды tftp в linux

Обновлено: 05.07.2024

TFTP (Trivial File Transfer Protocol) представляет собой упрощенный протокол передачи файлов (никакой авторизации, выдачи оглавления и т.д). В отличие от FTP использует для передачи пакетов протокол UDP, что упрощает его реализацию для встроенных устройств.

Применяется для загрузки конфигурации или firmware различными устройствами (например, сетевыми принтерами или маршрутизаторами) в сочетании с протоколом bootp (DHCP) и ARP, RARP.

Позднейшие дополнения к протоколу (RFC 2347, RFC 2348, RFC 2349) позволяют согласовывать некоторые опции обмена (размер блока - blksize от 8 до 65464 байт, интервал задержек - timeout от 1 до 255 секунд, размер файла - tsize). Имена опций и их значения передаются в пакете запроса на чтение или запись. Сервер отвечает на это пакетом подтверждения опций вместо обычного пакета подтверждения, в котором он указывает опции, с которыми он согласен.

Если MTU сети недостаточно, чтобы передавать блоки данных (вместе с заголовками TFTP, UDP, IP) "одним куском", то реализация TCP/IP стека должна уметь фрагментировать/дефрагментировать IP пакеты.

  • connect host [ port ]
  • mode ascii | binary (по умолчанию - ascii!)
  • ascii
  • binary
  • put имя-файла
  • put имя-локального-файлаимя-удаленного-файла
  • get имя-файла
  • get имя-удаленного-файлаимя-локального-файла
  • verbose
  • trace (трассировка пакетов)
  • status (показать состояние)
  • rexmt секунд (интервал перепосылки пакетов)
  • timeout секунд
  • quit

В Cisco IOS TFTP клиент встроен в команду copy, а имя хоста и файла спрашиваются в интерактивном режиме.

Демон in.tftpd в Solaris 2.5 запускается с помощью супердемона inetd с правами nobody/nobody. В качестве параметра задается директория, относительно которой будут задаваться имена файлов (по умолчанию - /tftpboot). Ключ "-s" заставляет сервер сделать chroot() в указанную директорию, которая в этом случае должна существовать. Допускается чтение только общедоступных файлов. Записывать можно только те файлы, которые уже существуют и доступны на запись всем. Порт и прочие параметры задаются в файле /etc/inetd.conf:

  • -v (увеличить болтливость)
  • -s (сервер делает chroot() в указанную директорию, которая в этом случае должна существовать; в неё хорошо бы скопировать etc/localtime)
  • -u uid (nobody; под каким пользователем запускаться)
  • -l (RH7.3: записывать журнал на syslog, источник - DAEMON; уровень - INFO, NOTICE, WARNING или ERR; для RH 9 и CentOS 4 задаёт автономный режим работы без xinetd)
  • -a адрес:порт (для автономного режима работы задаёт адрес и порт)
  • -R порт:порт (интервал портов сервера)
  • -c (позволяет создавать новые файлы с правами в соответствии с ключами -p и -U)
  • -U маска (umask для создаваемых файлов)
  • -p (ослабить проверку прав доступа до обычных)
  • -r option . (отключить обработку blksize, tsize, timeout) PXE требует tsize
  • -t секунд (запущенный сервер ждёт следующего запроса указанное время)
  • -T микросекунд (ожидание перед повторной посылкой пакета)
  • -m имя-файла (позволяет задать правила отображения запрашиваемых имён в локальные имена)
  • -B байт (максимальный размер блока)

Порт и прочие параметры задаются в файле /etc/xinetd.d/tftp (не забыть сделать /etc/rc.d/init.d/xinetd reload):

Протокол не имеет средств аутентификации и авторизации, поэтому обеспечение его безопасного использования на клиентах является непростой задачей. Использование протокола без установления соединения UDP усугубляет проблему (возможна посылка пакетов вслепую с поддельными исходящими адресами и портами). Первым делом надо заблокировать прием пакетов на порт UDP/69 на периферии сети (Cisco ACL) и с помощью ipchains ограничить их прием на внутреннем экране (это, к сожалению, обходится, если не использовать дополнительных средств наподобие коммутатора с привязкой портов к MAC адресам), т.е. на клиентах добавить перед строками "запретить все" в /etc/sysconfig/ipchains (не забыть сделать /etc/rc.d/init.d/ipchains restart):

Так как порты для передачи данных выбираются случайным образом, то необходимо обеспечить прием и передачу UDP пакетов на все порты из интервала ip_local_port_range сквозь внутренний экран.

Для iptables достаточно на клиенте (и промежуточных маршрутизаторах) подгрузить модуль ядра ip_conntrack_tftp (nf_conntrack_tftp) и разрешить

TFTP — простой протокол для передачи файлов по сети, использует протокол UDP (по порту 69), не поддерживает аутентификацию и шифрование. TFTP часто используется для загрузки файлов (прошивок, конфигураций) на устройства (маршрутизаторы, мини-АТС и другие), но его можно использовать и для простой пересылки файлов по сети между компьютерами. Для Linux доступно несколько TFTP демонов (серверов): tftpd, atftpd, tftpd-hpa. Вы можете использовать любой из них. Я расскажу, как устанавливать tftpd.

Помимо tftpd нужно будет установить службу inetd. inetd — представляет собой сетевую службу, которая обрабатывает входящие соединения (TCP, UDP) и запускает соответствующую программу для обработки запроса. Я буду использовать службу openbsd-inetd. Есть еще служба xinetd, вы можете ее использовать, но настраивается она несколько иначе.

Установка сервера tftpd и службы openbsd-inetd

Установим сервер tftpd и openbsd-inetd, для этого выполним команду:

Настройка tftpd

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

В файле найдите строки вида:

Аргумент /srv/tftp команды in.tftpd указывает на каталог в котором будут храниться файлы TFTP сервера. Заменим /srv/tftp на /tftpboot.

Создадим директорию /tftpboot:

Изменим права доступа:

Перезапуск службы inetd

Чтобы новые настройки вступили в силу, перезапустим службу inetd:

На этом установка TFTP сервера завершена, проверим его работу.

Проверка работы TFTP сервера, использование TFTP клиента

Для начала установим TFTP клиент, чтобы можно было подключаться к TFTP северу. Для установки TFTP клиента выполните в терминале команду:

Теперь создадим на сервере в директории /tftpboot какой-нибудь файл, например, myfile. Для создания файла myfile и записи в него текста «This is my file» выполните в терминале команду:

Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.

Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get myfile, которая означает получить файл с именем myfile с сервера.

В случае, если вы все сделали правильно, файл myfile загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.

На сервере Ubuntu есть несколько способов, которыми пользователи могут разместить систему Trivial File Transfer Protocol, чтобы пользователи могли отправлять файлы туда и обратно. Однако, вероятно, наиболее доступным инструментом для настройки TFTP-сервера на Ubuntu Server является программное обеспечение Tftpd. Почему? Все современные выпуски Ubuntu очень легко загрузить. Более того, все параметры конфигурации очень просты и понятны, даже если вы новичок в Linux.

В этом руководстве мы проведем вас через процесс размещения сервера TFTP на сервере Ubuntu. В идеале программное обеспечение должно запускаться с сервера Ubuntu. Тем не менее, можно настроить все это программное обеспечение для работы на рабочем столе Ubuntu.

Примечание: в этом руководстве мы уделяем большое внимание Ubuntu Linux, так как большинство пользователей серверов Linux используют его, и было бы сложно охватить несколько серверных операционных систем. TFTP работает с множеством других дистрибутивов Linux Server.

Установите программное обеспечение сервера TFTP и сопутствующие пакеты

Настройка TFTP-сервера в Ubuntu начинается с установки всех соответствующих пакетов, которые необходимы для правильной работы. Эти пакеты можно установить через Квартира менеджер пакетов из командной строки.

Чтобы запустить его на вашем сервере Ubuntu или настольном компьютере, запустите окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. Затем введите команды ниже.

Примечание: используете Debian Linux? Руководство и процесс установки для Tftpd на нем идентичны Ubuntu Linux. Чтобы заставить его работать, следуйте этому руководству, но замените все экземпляры Квартира с Apt-get.

Если вы используете Ubuntu Desktop, также можно запустить Центр программного обеспечения Ubuntu, найти каждый из этих пакетов и установить таким образом, если вы не являетесь поклонником установки программ с помощью Квартира.

Настроить TFTPD

Теперь, когда пакеты TFTPD настроены на сервере Ubuntu (или на рабочем столе), следующим шагом будет настройка сервера для правильной работы. Первым шагом в процессе настройки является создание папки в /так далее/ каталог.

Позаботившись о папке, создайте новый текстовый файл с трогать команда. В этом файле будут храниться все конфигурации сервера.

Не могу использовать sudo touch? Попробуйте поднять терминальную оболочку до Root с помощью sudo -s заранее.

Теперь, когда файл существует в /etc/xinetd.d/, откройте его в текстовом редакторе Nano.

Возьмите приведенный ниже код и вставьте его в окно текстового редактора Nano.

service tftp
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
>

Сохраните изменения в tftp-файле в Nano, нажав кнопку Ctrl + O комбинация клавиш. Затем нажмите Ctrl + X выйти.

Следуя файлу конфигурации TFTP, вы должны создать папку «tftpboot» в корневом каталоге (/) на вашем сервере Ubuntu или рабочем столе Ubuntu.

С использованием mkdir команда, создайте каталог.

Затем обновите разрешения для папки «tftpboot», используя chmod команда.

После того, как вы обновили информацию о разрешениях для каталога «tftpboot», пришло время использовать Chown инструмент для изменения информации о правах пользователя.

Примечание. Мы используем «никто» в Chown команда ниже по какой-то причине. Это позволит получить доступ к одинаковым разрешениям всем, кто пытается получить доступ к TFTP, а не устанавливать их для отдельных пользователей.

Наконец, вы должны перезапустить программное обеспечение сервера TFTP, чтобы принять изменения. В Ubuntu 16.04 и новее это делается с помощью systemctl команда.

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

Передача файлов по TFTP

Теперь, когда сервер TFTP на сервере Ubuntu запущен и работает, мы можем поговорить о том, как загружать и скачивать файлы. Причина, по которой необходимо обсудить, как использовать TFTP в Linux, заключается в том, что FTP-клиенты, такие как FileZilla и другие, вероятно, не поддерживают его.

Для начала откройте терминал на компьютере, на котором вы планируете подключиться к удаленному серверу TFTP. Затем установите пакет «tftp», чтобы вы могли отправлять соединения, выгружать, скачивать и т. Д.

Ubuntu

Debian

Arch Linux

Fedora

OpenSUSE

Установив приложение в вашей системе, узнайте IP-адрес вашего TFTP-сервера Ubuntu. Затем подключитесь к серверу, следуя примеру ниже.

Примечание: нужна помощь в определении IP-адреса вашего TFTP-сервера? Посмотрите этот пост здесь!


Чтобы загрузить файл с вашего TFTP-сервера, используйте получать команда.

3) Добавляем tftp в список служб, автоматически стартуемых при загрузке Linux:

4) Выключаем SELINUX Данная операция может быть потенциально опасной!

В файле »/etc/selinux/config» меняем значение переменной SELINUX на «disabled»:

Также надо обязательно разрешить порт TFTP в iptables (или выключить iptables командой: /etc/rc.d/init.d/iptables stop)

5) Проверка работы TFTP сервера

Этот способ проверки может и не работать. Лучше всего убедится в работоспособности TFTP с помощью команд u-boot.

Если в текущей директории появился файл «test», то TFTP сервер работает корректно

Installing and setting TFTPD in Ubuntu

by David Sudjiman

March 27th, 2006. Filed under: Linux.

Настройка и установка NFS в Fedora Core

1) Установка пакета

2) Настройка конфигурации В этом файле содержится описание директорий, которые будут доступны для монтирования по NFS:

Пример записи в файле »/etc/exports», позволяющий монтировать директорию с файловой системой для Embedded Linux:

rw - возможность чтения и записи содержимого директории
no_root_squash - доступ к файлам с правами суперпользователя (root)
no_all_squash - сохранение uids и gids пользователя файлам
sync - NFS отвечает на запросы лишь после модификации файлов

3) Запуск службы NFS

Должны появится следующие надписи:

В случае, если NFS запускается в первый раз, то вместо «service nfs restart» необходимо написать «service nfs start».
Процедуру «restart» необходимо выполянть каждый раз, когда вы меняете записи в »/etc/exports».

4) Проверка NFS
Чтобы убедиться, что директории экспортированы, надо выполнить команду:

Если какие-либо директории из файла »/etc/exports» отсутствуют, то проверьте конфигурацию в файле.

5) Включение службы NFS

После выполнения этой команды NFS сервер будет стартовать автоматически для уровней выполнения 3, 4 и 5.

Настройка и установка NFS в Ubuntu

Настраиваем, какие именно директории мы хотим открыть для совместного пользования и кому. Все это делается в файле /etc/exports:

В приведенном ниже примере я выделил директорию /data (директория с данными на сервере) в совместное пользование всем компьютерам с правами чтения и записи:

домашняя директория пользователя serhiy стала доступной в режиме только чтение для компьютера с IP 192.168.1.34. Все остальные компьютеры сети к этому разделу доступа не имеют.

ro - права только на чтение. Можно и не указывать, так как она установлена по умолчанию.

rw - дает клиентам право на запись.

no_root_squash - по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать.

noaccess - запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.

Теперь нужно перезапустить nfs-kernel-server:

Если после этого вы захотите поменять что-нибудь в файле /etc/exports, то для того, чтобы изменения вступили в силу, достаточно запустить следующую команду:

Читайте также: