FTP Server · 4 min read · Nov 27, 2025

Wie man PureFTPd auf CentOS 7 kompiliert

Wie man PureFTPd auf CentOS 7 kompiliert

Version 1.0
Autor: Till Brehm
Folgen Sie howtoforge auf Twitter

In diesem Tutorial werde ich die Schritte erklären, um PureFTPd aus dem Quellcode auf CentOS 7 zu kompilieren. Pure-ftpd ist ein leichtgewichtiger und stabiler FTP-Daemon, der verschiedene Authentifizierungs-Backends wie Linux-Systembenutzer, puredb, MySQL und PostgreSQL unterstützt. Ich werde später pure-ftpd für ISPConfig 3 verwenden, daher werde ich es mit MySQL / Mariadb-Unterstützung kompilieren.

Ich habe diesen Leitfaden ursprünglich für das perfekte Server-Tutorial von ISPConfig 3 geschrieben, da nicht klar war, ob EPEL jemals ein pure-ftpd-Paket für CentOS 7 veröffentlichen würde und ich dieses Paket dringend benötigte, um die Unterstützung von CentOS 7 zu ISPConfig hinzuzufügen. Vor ein paar Tagen hat EPEL ein fertiges pure-ftpd .rpm veröffentlicht, und ich werde das für das perfekte Server-Tutorial verwenden, und für die meisten Benutzer wird es bequemer und empfohlen sein, das EPEL rpm zu verwenden. Dennoch werde ich hier die Schritte dokumentieren, um Ihr eigenes pure-ftpd-Paket zu erstellen, da dies für angepasste Builds nützlich sein könnte.

Vorbereitung der Build-Umgebung

Installieren Sie die CentOS-Entwicklungstools.

yum -y groupinstall ‘Development Tools’

Installieren Sie die MariaDB-Entwicklungsdateien.

yum -y install mariadb-devel

Laden Sie die Quellcodedateien von pure-ftpd herunter und entpacken Sie das Archiv.

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

Führen Sie den Konfigurationsbefehl aus, um den Build vorzubereiten. Um eine Übersicht über alle Kompilierungsoptionen zu erhalten, führen Sie ./configure –help aus.

./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

und kompilieren Sie die pure-ftpd-Binärdatei:

make

make install

Erstellen von Konfigurationsdateien und Startskripten

Zuerst erstellen wir das Startskript. Für diesen Build werde ich das Startskript von CentOS 6.5 verwenden, das auch auf CentOS 7 gut funktioniert.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Startup-Skript für den pure-ftpd FTP-Server  $Revision: 1.1 $
#
# chkconfig: - 85 15
# Beschreibung: Pure-FTPd ist ein FTP-Server-Daemon, der auf Troll-FTPd basiert
# Prozessname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Quellfunktion Bibliothek.
. /etc/init.d/functions

# Quellnetzwerkkonfiguration.
. /etc/sysconfig/network

# Überprüfen Sie, ob das Netzwerk konfiguriert ist.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Pfad zu den pure-ftp-Binärdateien.
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
}

# Sehen Sie, wie wir aufgerufen wurden.
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
                        # Vermeiden Sie Rennen
                        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

Dann erstellen Sie die Systemstartlinks und starten Sie PureFTPd:

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

Jetzt konfigurieren wir PureFTPd, um FTP- und TLS-Sitzungen zuzulassen. FTP ohne TLS ist ein sehr unsicheres Protokoll, da alle Passwörter und Daten im Klartext übertragen werden. Durch die Verwendung von TLS kann die gesamte Kommunikation verschlüsselt werden, wodurch FTP viel sicherer wird.

OpenSSL wird von TLS benötigt; um OpenSSL zu installieren, führen wir einfach aus:

yum -y install openssl

Öffnen Sie /etc/pure-ftpd/pure-ftpd.conf…

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

Wenn Sie FTP- und TLS-Sitzungen zulassen möchten, setzen Sie TLS auf 1:

[...]
# Diese Option kann drei Werte annehmen:
# 0 : Deaktivieren Sie die SSL/TLS-Verschlüsselungsschicht (Standard).
# 1 : Akzeptieren Sie sowohl traditionelle als auch verschlüsselte Sitzungen.
# 2 : Verweigern Sie Verbindungen, die keine SSL/TLS-Sicherheitsmechanismen verwenden,
#     einschließlich anonymer Sitzungen.
# Kommentieren Sie dies _nicht_ blind aus. Stellen Sie sicher, dass :
# 1) Ihr Server mit SSL/TLS-Unterstützung kompiliert wurde (--with-tls),
# 2) Ein gültiges Zertifikat vorhanden ist,
# 3) Nur kompatible Clients sich anmelden.

TLS                      1
[...]

Um TLS zu verwenden, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, daher erstelle ich zuerst dieses Verzeichnis:

mkdir -p /etc/ssl/private/

Anschließend können wir das SSL-Zertifikat wie folgt generieren:

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

Landname (2-Buchstaben-Code) [XX]: <– Geben Sie Ihren Landnamen ein (z.B. “DE”).
Bundesland oder Provinzname (vollständiger Name) []: <– Geben Sie den Namen Ihres Bundeslandes oder Ihrer Provinz ein.
Ortsname (z.B. Stadt) [Standardstadt]: <– Geben Sie Ihre Stadt ein.
Organisationsname (z.B. Firma) [Standard Company Ltd]: <– Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihres Unternehmens).
Name der organisatorischen Einheit (z.B. Abteilung) []: <– Geben Sie den Namen Ihrer organisatorischen Einheit ein (z.B. “IT-Abteilung”).
Allgemeiner Name (z.B. Ihr Name oder der Hostname Ihres Servers) []: <– Geben Sie den vollqualifizierten Domainnamen des Systems ein (z.B. “server1.example.com”).
E-Mail-Adresse []: <– Geben Sie Ihre E-Mail-Adresse ein.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

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

Starten Sie schließlich PureFTPd neu:

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

Das war’s. Sie können jetzt versuchen, sich mit Ihrem FTP-Client zu verbinden; Sie sollten jedoch Ihren FTP-Client so konfigurieren, dass er TLS verwendet.

Links

  • pure-ftpd
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.