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 $RETVALchmod +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
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.