FTP сервер · 4 min read · Nov 27, 2025

Как скомпилировать PureFTPd на CentOS 7

Как скомпилировать PureFTPd на CentOS 7

Версия 1.0
Автор: Тилл Брем
Следите за howtoforge в Twitter

В этом руководстве я объясню шаги по компиляции PureFTPd из исходников на CentOS 7. Pure-ftpd — это легковесный и стабильный FTP-демон, который поддерживает различные механизмы аутентификации, такие как пользователи системы Linux, puredb, MySQL и PostgeSQL. Позже я буду использовать pure-ftpd для ISPConfig 3, поэтому я скомпилирую его с поддержкой MySQL / Mariadb.

Я написал этот гид изначально для руководства по идеальному серверу ISPConfig 3, так как не было ясно, выпустит ли EPEL когда-либо пакет pure-ftpd для CentOS 7, и мне срочно нужен был этот пакет, чтобы добавить поддержку CentOS 7 в ISPConfig. Несколько дней назад EPEL выпустил готовый пакет pure-ftpd .rpm, и я буду использовать его для руководства по идеальному серверу, и для большинства пользователей будет более удобно и рекомендовано использовать EPEL rpm. Тем не менее, я задокументирую здесь шаги по сборке собственного пакета pure-ftpd, так как это может быть полезно для индивидуальных сборок.

Подготовка среды сборки

Установите инструменты разработки CentOS.

yum -y groupinstall ‘Development Tools’

Установите файлы разработки MariaDB.

yum -y install mariadb-devel

Скачайте исходные файлы pure-ftpd и распакуйте архив.

cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
tar xvjpf pure-ftpd-1.tar.bz2
cd pure-ftpd-1

Запустите команду configure для подготовки сборки. Чтобы получить обзор всех параметров компиляции, выполните ./configure –help.

./configure –prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –libexecdir=/usr/libexec –datadir=/usr/share –sysconfdir=/etc –sharedstatedir=/usr/com –localstatedir=/var –libdir=/usr/lib64 –includedir=/usr/include –infodir=/usr/share/info –mandir=/usr/share/man –with-mysql –with-virtualchroot –with-everything

и скомпилируйте бинарный файл pure-ftpd:

make

make install

Создание конфигурационных файлов и скриптов запуска

Сначала создадим скрипт запуска. Для этой сборки я буду использовать скрипт запуска из CentOS 6.5, который все еще работает нормально на CentOS 7.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Скрипт запуска для FTP-сервера pure-ftpd  $Revision: 1.1 $
#
# chkconfig: - 85 15
# описание: Pure-FTPd — это демон FTP-сервера, основанный на Troll-FTPd
# имя процесса: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# конфигурация: /etc/pure-ftpd/pure-ftpd.conf

# Подключаем библиотеку функций.
. /etc/init.d/functions

# Подключаем сетевую конфигурацию.
. /etc/sysconfig/network

# Проверьте, что сеть настроена.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Путь к бинарным файлам pure-ftp.
fullpath=/usr/sbin/pure-ftpd
pureftpwho=/usr/sbin/pure-ftpwho
pure_config=/etc/pure-ftpd/pure-ftpd.conf
pure_launch_script=/usr/sbin/pure-config.pl


start() {
        echo -n "$"Starting $prog: "
        daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
        echo
}

stop() {
        echo -n "$"Stopping $prog: "
        killproc pure-ftpd
        RETVAL=$?
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
        echo
}

# Посмотрите, как мы были вызваны.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
        echo -n "$"Reloading $prog: "
                killproc pure-ftpd -HUP
                RETVAL=$?
                echo
                ;;
        condrestart)
                if [ -f /var/lock/subsys/pure-ftpd ] ; then
                        stop
                        # избегаем гонки
                        sleep 3
                        start
                fi
                ;;
        status)
                status pure-ftpd
                RETVAL=$?
                if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
                        $pureftpwho
                fi
                ;;
        *)
                echo "$"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
                RETVAL=1
esac
exit $RETVAL

chmod +x /etc/init.d/pure-ftpd
mkdir /etc/pure-ftpd/

cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf
cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
chmod 744 /etc/pure-ftpd/pure-ftpd.conf
chmod 755 /usr/sbin/pure-config.pl

Затем создайте системные ссылки для автозагрузки и запустите PureFTPd:

chkconfig –levels 235 pure-ftpd on
systemctl start pure-ftpd.service

Теперь мы настраиваем PureFTPd для разрешения FTP и TLS-сессий. FTP без TLS — это очень небезопасный протокол, так как все пароли и все данные передаются в открытом виде. Используя TLS, всю коммуникацию можно зашифровать, что делает FTP гораздо более безопасным.

OpenSSL необходим для TLS; чтобы установить OpenSSL, просто выполните:

yum -y install openssl

Откройте /etc/pure-ftpd/pure-ftpd.conf…

vi /etc/pure-ftpd/pure-ftpd.conf

Если вы хотите разрешить FTP и TLS-сессии, установите TLS в 1:

[...]
# Эта опция может принимать три значения :
# 0 : отключить уровень шифрования SSL/TLS (по умолчанию).
# 1 : принимать как традиционные, так и зашифрованные сессии.
# 2 : отказывать в соединениях, которые не используют механизмы безопасности SSL/TLS,
#     включая анонимные сессии.
# Не _разкомментируйте_ это бездумно. Убедитесь, что :
# 1) Ваш сервер был скомпилирован с поддержкой SSL/TLS (--with-tls),
# 2) Действительный сертификат установлен,
# 3) Только совместимые клиенты смогут войти.

TLS                      1
[...]

Чтобы использовать TLS, мы должны создать SSL-сертификат. Я создаю его в /etc/ssl/private/, поэтому сначала создаю этот каталог:

mkdir -p /etc/ssl/private/

После этого мы можем сгенерировать SSL-сертификат следующим образом:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Country Name (2 letter code) [XX]: <– Введите название вашей страны (например, “DE”).
State or Province Name (full name) []: <– Введите полное название вашего штата или провинции.
Locality Name (eg, city) [Default City]: <– Введите название вашего города.
Organization Name (eg, company) [Default Company Ltd]: <– Введите название вашей организации (например, название вашей компании).
Organizational Unit Name (eg, section) []: <– Введите название вашего структурного подразделения (например, “IT Department”).
Common Name (eg, your name or your server’s hostname) []: <– Введите полное доменное имя системы (например, “server1.example.com”).
Email Address []: <– Введите ваш адрес электронной почты.

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

chmod 600 /etc/ssl/private/pure-ftpd.pem

Наконец, перезапустите PureFTPd:

systemctl stop pure-ftpd.service
systemctl start pure-ftpd.service

Вот и все. Теперь вы можете попробовать подключиться с помощью вашего FTP-клиента; однако вам следует настроить ваш FTP-клиент для использования TLS.

Ссылки

  • pure-ftpd
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.