Установка Proftpd на FreeBSD из исходников
Добавляем пользователя и группу proftpd под которым будет работать proftpd демон (в моем случае это юзер ftp и такая же группа ). Создаем пользователя ftp если его нет, и, назначаем ему пароль:
# pw adduser ftp -m -d /home/ftp -c "FTP user" # passwd ftp
Cоздаем необходимые директории и назначаем права:
# chmod 555 /home/ftp # mkdir -p /home/ftp/incoming # chmod 777 /home/ftp/incoming # mkdir -p /home/ftp/public # chmod 555 /home/ftp/public # chown -R ftp:ftp /home/ftp/
Путь к логам:
# touch /var/log/ftp-tranfer.log # touch /var/log/ftp-error.log
Так как мы будем устанавливать Proftpd на FreeBSD из исходников, то нужно создать папку. Для удобства я создал папку- src по такому пути:
# mkdir /usr/local/src
Применим права на папку, для того что бы не посторонний что либо делать в это папке, необходимо для вашей же безопасности:
# chown -R root:wheel /usr/local/src
Перейдем в папку
# cd /usr/local/src/
Перед тем как скомпилировать (собрать) программу не мешало бы ее скачать, идем на официальный сайт Proftpd и смотрим какая стабильная версия уже существует и скачиваем (на момент написания статьи — самая последняя была proftpd 1.3.5).
Надеюсь не стоит рассказывать и описывать процесс установки самой программы для скачивания с ftp сервера -(подробная информация wget), считаем что она уже установлена, хотя можно обойтись и без wget (с помощью fetch).
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5rc3.tar.gz
или если не хочется ставить wget, то:
# fetch ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5rc3.tar.gz
Расспаковуем архив с программой proftpd:
# tar -zxvf proftpd-1.3.5rc3.tar.gz -C /usr/local/src/
Переходим в сам каталог уже расспакованных исходников:
# cd /usr/local/src/proftpd-1.3.5rc3/
В консоле прописываем конфигурацию(нужно читать README!), можно по желанию заюзать мой конфигур, он полностью нормальный и рабочий:
./configure \ --prefix=/usr/local/proftpd \ --sysconfdir=/etc/proftpd \ --localstatedir=/var/run \ --mandir=/usr/share/man \ --without-pam \ --disable-auth-pam \ --enable-openssl
Конфигурация выполнена, сейчас предстоит собрать программу:
# make; make install
ВСЕ! Proftpd компилируется, ждем пару минут. Урааааа, все установилось нормально, если нет (вероятность крайне мала, разве что у Вас руки крабы и Вы не набирали команды локтями) — придется читать в инете ероры и устранить. Такого не должно быть 😉
Proftpd скомпилировался, нужно запустить и добавить ftp-сервера в автозагрузку при необходимости:
Я использую текстовый редактор «ee» (в системе стандартный «vi»), по этому поставьте его или юзайте «vi»- я его не сильно освоил, по этому для меня проще ‘ee’, но выбирать Вам.
# ee /etc/rc.conf
или
# vi /etc/rc.conf
В начале любой строки прописываем следующий текст (я всегда перехожу в самый конец текста и вставляю) :
proftpd_enable=»YES»
Можно и не редактировать этот файл, но тогда стоит выполнить следующее перенаправление ввода-вывода :
# echo 'proftpd_enable="YES"' >> /etc/rc.conf
Старт сервера PROFTPD.
/usr/local/sbin/proftpd [options]
где /usr/local/sbin определяется конфигурирование и [параметры] описаны ниже (или в ProFTPD (8)):
-h, —help
Display proftpd usage
-n, —nodaemon
Disable background daemon mode and send all output to stderr)
-q, —quiet
Don’t send output to stderr when running with -n or —nodaemon
-d [level], —debug
Set debugging level (0-9, 9 = most debugging)
-D [definition], —define
Set arbitrary IfDefine definition
-c [config-file], —config
Specify alternate configuration file
-p [0|1], —persistent
Enable/disable default persistent passwd support
-l, —list
List all compiled-in modules
-t, —configtest
Test the syntax of the specified config
-v, —version
Print version number and exit
-vv, —version-status
Print extended version information and exit
PS: Кто не знает какие параметры передавать, используйте user/local/sbin/proftpd
Для автозагрузки пишем скрипт который должен лежать в usr/etc/rc.d, мой выглядит следующим образом:
# cd /usr/local/etc/rc.d
Я качал скрипт по ссылке wget-ом:
# wget -c http://soft.vpser.net/lnmp/ext/init.d.proftpd
Для легкого запоминания я переименовал его в proftpd.sh
# mv init.d.proftpd proftpd.sh
Ставим на скрипт права, чтение и выполнение!
# chmod 700 /usr/local/etc/rc.d/proftpd.sh
Сам скрипт выглядит следующим образом:
#proftpd.sh # Установка Proftpd на FreeBSD из исходников(скрипт) #! /bin/sh # chkconfig: 2345 55 25 # Description: Startup script for proftpd on Debian. Place in /etc/init.d and # run 'update-rc.d -f proftpd defaults', or use the appropriate command on your # distro. For CentOS/Redhat run: 'chkconfig --add proftpd' ### BEGIN INIT INFO # Provides: proftpd # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the proftpd server # Description: starts proftpd using start-stop-daemon ### END INIT INFO # Author: licess PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="proftpd daemon" NAME=proftpd DAEMON=/usr/local/proftpd/sbin/$NAME CONFIGFILE=/usr/local/proftpd/etc/$NAME.conf PIDFILE=/usr/local/proftpd/var/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON || echo -n "$NAME already running" } do_stop() { kill -INT `cat $PIDFILE` || echo -n "$NAME not running" } do_reload() { kill -HUP `cat $PIDFILE` || echo -n "$NAME can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; reload) echo -n "Stopping $DESC: $NAME" do_reload echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 exit 3 ;; esac exit 0
Запускаем демона:
# /usr/local/etc/rc.d/proftpd.sh start # ps aux | grep proftpd
Конфигурация proftpd:
Пришло время настроить сам конфиг, править нужно совсем немного или юзнуть мой:
# ee /usr/local/etc/proftpd.conf
#отредактируем конфиг по теме "Установка Proftpd на FreeBSD из исходников" #имя сервера ServerName "Home FTP:" # название вашего ФТП ServerAdmin nvs@8.to # Ваш email DefaultAddress 78.140.144.33 # IP на котором будет "висеть" proftpd. #обычный запуск демоном, не через inetd ServerType standalone #inetd DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on ScoreboardFile /var/run/proftpd.scoreboard CommandBufferSize 512 ListOptions "-l" #пользователь и группа, под которой работает демон proftpd User nobody #ftp- этот пользователь, которого мы создавали в самом начале статьи Group nogroup #ftp #портподефолту Port 21 #по каким портам осуществляется пассивное соединение PassivePorts 30000 35000 #маска ограничения создания директорий и файлов Umask 022 MaxInstances 30 #меседж при входе DisplayConnect /etc/ftp.msg DefaultRoot /home/ftp UseReverseDNS off IdentLookups off DenyFilter \*.*/ PathDenyFilter "(^|/)[-.]" #установим ограничения по времени TimeoutIdle 180 TimeoutLogin 120 TimeoutNoTransfer 360 TimeoutStalled 640 #где находятся логи TransferLog /var/log/ftp-tranfer.log SystemLog /var/log/ftp-error.log <Anonymous /home/ftp> User ftp Group ftp UserAlias anonymous ftp UserAlias guest ftp MaxClients 50 DisplayChdir /etc/ftp_message.msg DisplayLogin /etc/ftp_login.msg AccessDenyMsg AHTUNG!!! AccessGrantMsg Now apload/download files? DisplayGoAway Go Away #разрешаем запись в incoming <Directory /home/ftp/incoming> Umask 022 022 <Limit READ WRITE STOR> AllowAll </Limit> </Directory> #public только для чтения <Directory /home/ftp/public> <Limit READ> AllowAll </Limit> <Limit WRITE STOR> DenyAll </Limit> </Directory> </Anonymous>
Установка Proftpd на FreeBSD из исходников завершено. Смотрите другие мои посты.
Партнеры:
1. Формы и методы повышения профессионального мастерства » МЕДИЦИНСКАЯ СЕСТРА
Cтавим на скрипт права, чтение и выполнение!
chmod 100 /usr/local/etc/rc.d/proftpd.sh
наверно chmod 700
Да, спасибо за замечание 🙂 Исправил 😉