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 $RETVALchmod +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
Get new posts in your inbox
No spam. Unsubscribe anytime.