Страница 1 из 1

Установка tftp сервера

Добавлено: 15 сен 2011, 11:03
RomA
Вступление:
С ростом оборудования всё чаще и чаще приходилось сталкиваться с тем, что нужен tftp сервер. В качестве примера могу привести:
1) Бекап конфигов (cisco, IP телефоны)
2) Обновление прошивок (cisco, IP телефоны, свитчи)
3) Централизованный конфиг телефонной книги на тех же телефонах
и так далее. В связи с чем озаботился созданием собственного tftp сервера.

Установка:
Идём в порт /usr/ports/ftp/tftp-hpa и выполняем make install clean
После строк

Код: Выделить всё

/usr/local/bin/tftp
/usr/local/libexec/in.tftpd

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
===>  Cleaning for tftp-hpa-0.49
сервер можно считать установленным. Теперь заводим пользователя и домашнюю директорию

Код: Выделить всё

stat# pw groupadd tftpd
stat# pw useradd tftpd -c TFTP\ manager -d /nonexistent -g tftpd -s /usr/sbin/nologin
stat# mkdir /usr/home/tftp
stat# chown tftpd:tftpd  /usr/home/tftp
stat# chmod 750 /usr/home/tftp
stat# touch /usr/local/etc/rc.d/tftpd.sh
stat# chmod +x /usr/local/etc/rc.d/tftpd.sh
Не забываем прописать запуск сервера в /etc/rc.conf - сделать это можно следующий командой:

Код: Выделить всё

stat# echo 'tftpd_enable="YES"' >> /etc/rc.conf
Теперь нам надо наполнить скрипт запуска сервера (/usr/local/etc/rc.d/tftpd.sh) - вписываем туда следующее:

Код: Выделить всё

#!/bin/sh
#
# tftp-hpa init script
# Copyright (c) 2006 by Alexey Tsvetnov, vorakl@fbsd.kiev.ua
#
# PROVIDE: tftpd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Define these tftpd_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#       /etc/rc.conf.d/tftpd
#
# tftpd_enable (bool): Set it to "YES" to enable tftpd.
#             Default is "NO".
# tftpd_pidfile (path):        Set full path to tftpd.pid.
#                              Default is "/var/run/tftpd.pid".
# tftpd_datadir (path): Set full path to directory with data.
#                              Default is "/var/tftp".
# tftpd_flags (str):           Extra flags passed to start command.
#                              Default is "-cps -u tftpd -U 037 -B 1468".
#
. /etc/rc.subr
name="tftpd"
rcvar=`set_rcvar`
load_rc_config $name
# DO NOT CHANGE THESE DEFAULT VALUES HERE
: ${tftpd_enable="NO"}
: ${tftpd_pidfile="/var/run/tftpd.pid"}
: ${tftpd_datadir="/usr/home/tftp"}
: ${tftpd_flags="--ipv4 -vvcps -u tftpd -U 037 -B 1468"}
extra_commands="reload"
start_cmd="tftpd_start"
stop_postcmd="tftpd_poststop"
reload_cmd="tftpd_reload"
pidfile=$tftpd_pidfile
procname="/usr/local/libexec/in.tftpd"
tftpd_start() {
/bin/echo -n "Starting tftpd"
/usr/local/libexec/in.tftpd $tftpd_flags -l  $tftpd_datadir
/bin/ps x | /usr/bin/grep in.tftpd | /usr/bin/grep -v grep | /usr/bin/awk '{print $1}' > $tftpd_pidfile
/bin/echo "."
}
tftpd_poststop() {
/bin/rm -f $tftpd_pidfile
}
tftpd_reload() {
/bin/kill -1 `cat $tftpd_pidfile`
}
run_rc_command "$1"
После /usr/local/etc/rc.d/tftpd.sh start tftp сервис у меня запустился и начал работать. Попробовал на него что-то закачать - всё получилось. Никаких неожиданностей не возникло.

Если не заморачиваться...

Добавлено: 07 янв 2019, 18:12
RomA
Идём в порты и ставим программу:

Код: Выделить всё

cd /usr/ports/ftp/tftp-hpa
make install clean
echo 'tftpd_enable="YES"' >> /etc/rc.conf
а в /etc/rc.conf пишем:

Код: Выделить всё

tftpd_enable="YES"
tftpd_flags="--ipv4 -vvcps -u www -U 037 -B 1468 -l /usr/home/tftp"
Если у вас стоит веб-сервер, то пользователь скорее всего есть. Дальше запускаем и радуемся )