Serveur FTP · 4 min read · Nov 27, 2025

Comment compiler PureFTPd sur CentOS 7

Comment compiler PureFTPd sur CentOS 7

Version 1.0
Auteur : Till Brehm
Suivez howtoforge sur Twitter

Dans ce tutoriel, j’expliquerai les étapes pour compiler PureFTPd à partir des sources sur CentOS 7. Pure-ftpd est un démon FTP léger et stable qui prend en charge divers backends d’authentification tels que les utilisateurs système Linux, puredb, MySQL et PostgreSQL. J’utiliserai plus tard pure-ftpd pour ISPConfig 3, c’est pourquoi je vais le compiler avec le support de MySQL / Mariadb.

J’ai écrit ce guide à l’origine pour le tutoriel du serveur parfait ISPConfig 3 car il n’était pas clair si EPEL publierait un jour le package pure-ftpd pour CentOS 7 et j’avais désespérément besoin de ce package pour ajouter le support de CentOS 7 à ISPConfig. Il y a quelques jours, EPEL a publié un .rpm de pure-ftpd prêt à l’emploi et je vais l’utiliser pour le tutoriel du serveur parfait et pour la plupart des utilisateurs, il sera plus pratique et recommandé d’utiliser le rpm EPEL. Néanmoins, je vais documenter ici les étapes pour construire votre propre package pure-ftpd car cela pourrait encore être utile pour des constructions personnalisées.

Préparation de l’environnement de construction

Installez la chaîne d’outils de développement CentOS.

yum -y groupinstall ‘Development Tools’

Installez les fichiers de développement de MariaDB.

yum -y install mariadb-devel

Téléchargez les fichiers sources de pure-ftpd et décompressez l’archive.

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

Exécutez la commande de configuration pour préparer la construction. Pour obtenir un aperçu de toutes les options de compilation, exécutez ./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

et compilez le binaire pure-ftpd :

make

make install

Créer des fichiers de configuration et des scripts de démarrage

Tout d’abord, nous créons le script de démarrage. Pour cette construction, j’utiliserai le script de démarrage de CentOS 6.5 qui fonctionne toujours bien sur CentOS 7.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Script de démarrage pour le serveur FTP pure-ftpd  $Revision: 1.1 $
#
# chkconfig: - 85 15
# description: Pure-FTPd est un démon serveur FTP basé sur Troll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Vérifiez que le réseau est configuré.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Chemin vers les binaires 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
}

# Voir comment nous avons été appelés.
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
                        # éviter la course
                        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

Ensuite, créez les liens de démarrage du système et démarrez PureFTPd :

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

Maintenant, nous configurons PureFTPd pour autoriser les sessions FTP et TLS. FTP sans TLS est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.

OpenSSL est nécessaire pour TLS ; pour installer OpenSSL, il suffit d’exécuter :

yum -y install openssl

Ouvrez /etc/pure-ftpd/pure-ftpd.conf…

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

Si vous souhaitez autoriser les sessions FTP et TLS, définissez TLS sur 1 :

[...]
# Cette option peut accepter trois valeurs :
# 0 : désactiver la couche de chiffrement SSL/TLS (par défaut).
# 1 : accepter à la fois les sessions traditionnelles et chiffrées.
# 2 : refuser les connexions qui n'utilisent pas les mécanismes de sécurité SSL/TLS,
#     y compris les sessions anonymes.
# Ne _décommentez_ pas cela à la légère. Assurez-vous que :
# 1) Votre serveur a été compilé avec le support SSL/TLS (--with-tls),
# 2) Un certificat valide est en place,
# 3) Seuls des clients compatibles se connecteront.

TLS                      1
[...]

Pour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :

mkdir -p /etc/ssl/private/

Ensuite, nous pouvons générer le certificat SSL comme suit :

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

Nom du pays (code à 2 lettres) [XX]: <– Entrez le nom de votre pays (par exemple, “FR”).
Nom de l’état ou de la province (nom complet) []: <– Entrez le nom de votre état ou province.
Nom de la localité (par exemple, ville) [Default City]: <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Default Company Ltd]: <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) []: <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, votre nom ou le nom d’hôte de votre serveur) []: <– Entrez le nom de domaine complet du système (par exemple, “server1.example.com”).
Adresse e-mail []: <– Entrez votre adresse e-mail.

Changez les permissions du certificat SSL :

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

Enfin, redémarrez PureFTPd :

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

C’est tout. Vous pouvez maintenant essayer de vous connecter en utilisant votre client FTP ; cependant, vous devez configurer votre client FTP pour utiliser TLS.

Liens

  • pure-ftpd
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.