Servidor FTP · 4 min read · Nov 27, 2025

Cómo compilar PureFTPd en CentOS 7

Cómo compilar PureFTPd en CentOS 7

Versión 1.0
Autor: Till Brehm
Sigue a howtoforge en Twitter

En este tutorial explicaré los pasos para compilar PureFTPd desde el código fuente en CentOS 7. Pure-ftpd es un demonio FTP ligero y estable que soporta varios backends de autenticación como usuarios del sistema Linux, puredb, MySQL y PostgreSQL. Más adelante usaré pure-ftpd para ISPConfig 3, por lo tanto lo compilaré con soporte para MySQL / Mariadb.

Escribí esta guía originalmente para el tutorial del servidor perfecto de ISPConfig 3 ya que no estaba claro si EPEL alguna vez lanzaría el paquete pure-ftpd para CentOS 7 y necesitaba este paquete para agregar soporte de CentOS 7 a ISPConfig. Hace unos días, EPEL lanzó un .rpm de pure-ftpd listo para usar y lo utilizaré para el tutorial del servidor perfecto y para la mayoría de los usuarios será más conveniente y recomendable usar el rpm de EPEL. Sin embargo, documentaré aquí los pasos para construir tu propio paquete de pure-ftpd ya que esto podría ser útil para compilaciones personalizadas.

Preparando el entorno de construcción

Instala la cadena de herramientas de desarrollo de CentOS.

yum -y groupinstall ‘Development Tools’

Instala los archivos de desarrollo de MariaDB.

yum -y install mariadb-devel

Descarga los archivos fuente de pure-ftpd y descomprime el archivo.

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

Ejecuta el comando de configuración para preparar la construcción. Para obtener una visión general de todas las opciones de compilación, ejecuta ./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

y compila el binario de pure-ftpd:

make

make install

Crear archivos de configuración y scripts de inicio

Primero creamos el script de inicio. Para esta compilación usaré el script de inicio de CentOS 6.5 que aún funciona bien en CentOS 7.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Script de inicio para el servidor FTP pure-ftpd  $Revision: 1.1 $
#
# chkconfig: - 85 15
# description: Pure-FTPd es un demonio servidor FTP basado en Troll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Biblioteca de funciones de origen.
. /etc/init.d/functions

# Configuración de red de origen.
. /etc/sysconfig/network

# Verifica que la red esté configurada.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Ruta a los binarios de 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 "$"Iniciando $prog: "
        daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
        echo
}

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

# Ver cómo se nos llamó.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
        echo -n "$"Recargando $prog: "
                killproc pure-ftpd -HUP
                RETVAL=$?
                echo
                ;;
        condrestart)
                if [ -f /var/lock/subsys/pure-ftpd ] ; then
                        stop
                        # evitar carrera
                        sleep 3
                        start
                fi
                ;;
        status)
                status pure-ftpd
                RETVAL=$?
                if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
                        $pureftpwho
                fi
                ;;
        *)
                echo "$"Uso: 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

Luego crea los enlaces de inicio del sistema y comienza PureFTPd:

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

Ahora configuramos PureFTPd para permitir sesiones FTP y TLS. FTP sin TLS es un protocolo muy inseguro porque todas las contraseñas y todos los datos se transfieren en texto claro. Al usar TLS, toda la comunicación puede ser cifrada, haciendo que FTP sea mucho más seguro.

OpenSSL es necesario para TLS; para instalar OpenSSL, simplemente ejecutamos:

yum -y install openssl

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

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

Si deseas permitir sesiones FTP y TLS, establece TLS en 1:

[...]
# Esta opción puede aceptar tres valores :
# 0 : deshabilitar la capa de cifrado SSL/TLS (por defecto).
# 1 : aceptar tanto sesiones tradicionales como cifradas.
# 2 : rechazar conexiones que no utilicen mecanismos de seguridad SSL/TLS,
#     incluidas las sesiones anónimas.
# No _descomentes_ esto ciegamente. Asegúrate de que :
# 1) Tu servidor ha sido compilado con soporte SSL/TLS (--with-tls),
# 2) Un certificado válido está en su lugar,
# 3) Solo los clientes compatibles iniciarán sesión.

TLS                      1
[...]

Para usar TLS, debemos crear un certificado SSL. Lo crearé en /etc/ssl/private/, por lo tanto, primero crearé ese directorio:

mkdir -p /etc/ssl/private/

Después, podemos generar el certificado SSL de la siguiente manera:

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

Nombre del país (código de 2 letras) [XX]: <– Ingresa el nombre de tu país (por ejemplo, “DE”).
Nombre del estado o provincia (nombre completo) []: <– Ingresa el nombre de tu estado o provincia.
Nombre de la localidad (por ejemplo, ciudad) [Ciudad por defecto]: <– Ingresa tu ciudad.
Nombre de la organización (por ejemplo, empresa) [Compañía por defecto Ltd]: <– Ingresa el nombre de tu organización (por ejemplo, el nombre de tu empresa).
Nombre de la unidad organizativa (por ejemplo, sección) []: <– Ingresa el nombre de tu unidad organizativa (por ejemplo, “Departamento de TI”).
Nombre común (por ejemplo, tu nombre o el nombre de host de tu servidor) []: <– Ingresa el nombre de dominio completamente calificado del sistema (por ejemplo, “server1.example.com”).
Dirección de correo electrónico []: <– Ingresa tu dirección de correo electrónico.

Cambia los permisos del certificado SSL:

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

Finalmente reinicia PureFTPd:

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

Eso es todo. Ahora puedes intentar conectarte usando tu cliente FTP; sin embargo, debes configurar tu cliente FTP para usar TLS.

Enlaces

  • pure-ftpd
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.