Compilazione software · 4 min read · Nov 27, 2025

Come compilare PureFTPd su CentOS 7

Come compilare PureFTPd su CentOS 7

Versione 1.0
Autore: Till Brehm
Segui howtoforge su Twitter

In questo tutorial spiegherò i passaggi per compilare PureFTPd da sorgente su CentOS 7. Pure-ftpd è un demone FTP leggero e stabile che supporta vari backend di autenticazione come utenti di sistema Linux, puredb, MySQL e PostgeSQL. Userò in seguito pure-ftpd per ISPConfig 3, quindi lo compilerò con supporto per MySQL / Mariadb.

Ho scritto questa guida originariamente per il tutorial del server perfetto di ISPConfig 3 poiché non era chiaro se EPEL avrebbe mai rilasciato il pacchetto pure-ftpd per CentOS 7 e avevo bisogno di questo pacchetto per aggiungere il supporto per CentOS 7 a ISPConfig. Qualche giorno fa, EPEL ha rilasciato un pacchetto pure-ftpd .rpm già pronto e userò quello per il tutorial del server perfetto e per la maggior parte degli utenti sarà più conveniente e raccomandato utilizzare l’rpm EPEL. Tuttavia, documenterò qui i passaggi per costruire il proprio pacchetto pure-ftpd poiché potrebbe comunque essere utile per build personalizzate.

Preparare l’ambiente di build

Installa il toolchain di sviluppo di CentOS.

yum -y groupinstall ‘Development Tools’

Installa i file di sviluppo di MariaDB.

yum -y install mariadb-devel

Scarica i file sorgente di pure-ftpd e decomprimi l’archivio.

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

Esegui il comando di configurazione per preparare la build. Per avere una panoramica di tutte le opzioni di compilazione, esegui ./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

e compila il binario pure-ftpd:

make

make install

Crea file di configurazione e script di avvio

Prima creiamo lo script di avvio. Per questa build userò lo script di avvio di CentOS 6.5 che funziona ancora bene su CentOS 7.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Script di avvio per il server FTP pure-ftpd  $Revision: 1.1 $
#
# chkconfig: - 85 15
# descrizione: Pure-FTPd è un demone server FTP basato su Troll-FTPd
# nome processo: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Libreria di funzioni di origine.
. /etc/init.d/functions

# Configurazione di rete di origine.
. /etc/sysconfig/network

# Controlla che la rete sia configurata.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Percorso ai binari 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
}

# Vedi come siamo stati chiamati.
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
                        # evita la corsa
                        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

Poi crea i collegamenti di avvio del sistema e avvia PureFTPd:

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

Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP senza TLS è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l’intera comunicazione può essere crittografata, rendendo così FTP molto più sicuro.

OpenSSL è necessario per TLS; per installare OpenSSL, eseguiamo semplicemente:

yum -y install openssl

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

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

Se vuoi consentire sessioni FTP e TLS, imposta TLS su 1:

[...]
# Questa opzione può accettare tre valori :
# 0 : disabilita il livello di crittografia SSL/TLS (predefinito).
# 1 : accetta sia sessioni tradizionali che crittografate.
# 2 : rifiuta le connessioni che non utilizzano meccanismi di sicurezza SSL/TLS,
#     comprese le sessioni anonime.
# Non _devi_ decommentare questo ciecamente. Assicurati che :
# 1) Il tuo server è stato compilato con supporto SSL/TLS (--with-tls),
# 2) Un certificato valido è in atto,
# 3) Solo client compatibili si connetteranno.

TLS                      1
[...]

Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:

mkdir -p /etc/ssl/private/

Dopo, possiamo generare il certificato SSL come segue:

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

Nome del Paese (codice di 2 lettere) [XX]: <– Inserisci il nome del tuo paese (ad es., “IT”).
Nome dello Stato o della Provincia (nome completo) []: <– Inserisci il nome del tuo Stato o Provincia.
Nome della Località (ad es., città) [Città Predefinita]: <– Inserisci la tua città.
Nome dell’Organizzazione (ad es., azienda) [Azienda Predefinita Ltd]: <– Inserisci il nome della tua organizzazione (ad es., il nome della tua azienda).
Nome dell’Unità Organizzativa (ad es., sezione) []: <– Inserisci il nome della tua unità organizzativa (ad es. “Reparto IT”).
Nome Comune (ad es., il tuo nome o il nome host del tuo server) []: <– Inserisci il Nome di Dominio Completo del sistema (ad es., “server1.example.com”).
Indirizzo Email []: <– Inserisci il tuo indirizzo email.

Cambia i permessi del certificato SSL:

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

Infine riavvia PureFTPd:

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

Questo è tutto. Puoi ora provare a connetterti utilizzando il tuo client FTP; tuttavia, dovresti configurare il tuo client FTP per utilizzare TLS.

Link

  • pure-ftpd
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.