Установка Proftpd на FreeBSD из исходников (не из портов)

Установка 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. Формы и методы повышения профессионального мастерства » МЕДИЦИНСКАЯ СЕСТРА

2 thoughts on “Установка Proftpd на FreeBSD из исходников (не из портов)

  1. Cтавим на скрипт права, чтение и выполнение!
    chmod 100 /usr/local/etc/rc.d/proftpd.sh
    наверно chmod 700

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.