Servidor FTP · 4 min read · Nov 27, 2025

Como compilar PureFTPd no CentOS 7

Como compilar PureFTPd no CentOS 7

Versão 1.0
Autor: Till Brehm
Siga o howtoforge no Twitter

Neste tutorial, explicarei os passos para compilar o PureFTPd a partir do código-fonte no CentOS 7. O Pure-ftpd é um daemon FTP leve e estável que suporta vários backends de autenticação, como usuários do sistema Linux, puredb, MySQL e PostgreSQL. Mais tarde, usarei o pure-ftpd para o ISPConfig 3, portanto, compilarei com suporte a MySQL / Mariadb.

Escrevi este guia originalmente para o tutorial do servidor perfeito do ISPConfig 3, pois não estava claro se o EPEL algum dia lançaria o pacote pure-ftpd para o CentOS 7 e eu precisava desse pacote para adicionar suporte ao CentOS 7 ao ISPConfig. Há alguns dias, o EPEL lançou um .rpm do pure-ftpd pronto e usarei isso para o tutorial do servidor perfeito, e para a maioria dos usuários será mais conveniente e recomendado usar o rpm do EPEL. No entanto, documentarei aqui os passos para construir seu próprio pacote pure-ftpd, pois isso ainda pode ser útil para compilações personalizadas.

Preparando o ambiente de construção

Instale a ferramenta de desenvolvimento do CentOS.

yum -y groupinstall ‘Development Tools’

Instale os arquivos de desenvolvimento do MariaDB.

yum -y install mariadb-devel

Baixe os arquivos de origem do pure-ftpd e descompacte o arquivo.

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

Execute o comando de configuração para preparar a construção. Para obter uma visão geral de todas as opções de compilação, execute ./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 compile o binário do pure-ftpd:

make

make install

Criar arquivos de configuração e scripts de inicialização

Primeiro, criamos o script de inicialização. Para esta compilação, usarei o script de inicialização do CentOS 6.5, que ainda funciona bem no CentOS 7.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Script de inicialização para o servidor FTP pure-ftpd  $Revision: 1.1 $
#
# chkconfig: - 85 15
# descrição: Pure-FTPd é um daemon de servidor FTP baseado no Troll-FTPd
# nome do processo: pure-ftpd
# arquivo pid: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Fonte da biblioteca de funções.
. /etc/init.d/functions

# Fonte da configuração de rede.
. /etc/sysconfig/network

# Verifique se a rede está configurada.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Caminho para os binários do 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 "$"Parando $prog: "
        killproc pure-ftpd
        RETVAL=$?
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
        echo
}

# Veja como fomos chamados.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
        echo -n "$"Recarregando $prog: "
                killproc pure-ftpd -HUP
                RETVAL=$?
                echo
                ;;
        condrestart)
                if [ -f /var/lock/subsys/pure-ftpd ] ; then
                        stop
                        # evitar corrida
                        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

Em seguida, crie os links de inicialização do sistema e inicie o PureFTPd:

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

Agora configuramos o PureFTPd para permitir sessões FTP e TLS. FTP sem TLS é um protocolo muito inseguro porque todas as senhas e todos os dados são transferidos em texto claro. Usando TLS, toda a comunicação pode ser criptografada, tornando o FTP muito mais seguro.

OpenSSL é necessário pelo TLS; para instalar o OpenSSL, simplesmente executamos:

yum -y install openssl

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

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

Se você quiser permitir sessões FTP e TLS, defina TLS como 1:

[...]
# Esta opção pode aceitar três valores :
# 0 : desativar a camada de criptografia SSL/TLS (padrão).
# 1 : aceitar sessões tradicionais e criptografadas.
# 2 : recusar conexões que não utilizam mecanismos de segurança SSL/TLS,
#     incluindo sessões anônimas.
# Não _descomente_ isso cegamente. Certifique-se de que :
# 1) Seu servidor foi compilado com suporte a SSL/TLS (--with-tls),
# 2) Um certificado válido está em vigor,
# 3) Apenas clientes compatíveis farão login.

TLS                      1
[...]

Para usar TLS, devemos criar um certificado SSL. Eu o crio em /etc/ssl/private/, portanto, primeiro crio esse diretório:

mkdir -p /etc/ssl/private/

Depois, podemos gerar o certificado SSL da seguinte forma:

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

Nome do País (código de 2 letras) [XX]: <– Digite o Nome do seu País (por exemplo, “BR”).
Nome do Estado ou Província (nome completo) []: <– Digite o Nome do seu Estado ou Província.
Nome da Localidade (por exemplo, cidade) [Cidade Padrão]: <– Digite sua Cidade.
Nome da Organização (por exemplo, empresa) [Empresa Padrão Ltda]: <– Digite o Nome da sua Organização (por exemplo, o nome da sua empresa).
Nome da Unidade Organizacional (por exemplo, seção) []: <– Digite o Nome da sua Unidade Organizacional (por exemplo, “Departamento de TI”).
Nome Comum (por exemplo, seu nome ou o nome do host do seu servidor) []: <– Digite o Nome de Domínio Totalmente Qualificado do sistema (por exemplo, “servidor1.exemplo.com”).
Endereço de E-mail []: <– Digite seu Endereço de E-mail.

Altere as permissões do certificado SSL:

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

Finalmente, reinicie o PureFTPd:

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

É isso. Agora você pode tentar se conectar usando seu cliente FTP; no entanto, você deve configurar seu cliente FTP para usar TLS.

Links

  • pure-ftpd
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.