Hosting · 6 min read · Jan 19, 2026
Virtuelles Hosting Mit PureFTPd Und MySQL (Inkl. Quota Und Bandbreitenmanagement) Auf Fedora 20 - Seite 2
5 Konfigurieren Sie PureFTPd
Bearbeiten Sie /etc/pure-ftpd/pure-ftpd.conf und stellen Sie sicher, dass die Zeilen ChrootEveryone, MySQLConfigFile und CreateHomeDir aktiviert sind und so aussehen:
vi /etc/pure-ftpd/pure-ftpd.conf| [...] ChrootEveryone yes [...] MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf [...] CreateHomeDir yes [...] |
Die Einstellung ChrootEveryone sorgt dafür, dass PureFTPd jeden virtuellen Benutzer in seinem Home-Verzeichnis chrootet, sodass er nicht in Verzeichnisse und Dateien außerhalb seines Home-Verzeichnisses browsen kann. Die Zeile CreateHomeDir sorgt dafür, dass PureFTPd das Home-Verzeichnis eines Benutzers erstellt, wenn der Benutzer sich anmeldet und das Home-Verzeichnis noch nicht existiert.
Dann bearbeiten wir /etc/pure-ftpd/pureftpd-mysql.conf. Es sollte so aussehen:
cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
vi /etc/pure-ftpd/pureftpd-mysql.conf| MYSQLSocket /var/lib/mysql/mysql.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") |
Stellen Sie sicher, dass Sie den String ftpdpass mit dem tatsächlichen Passwort für den MySQL-Benutzer pureftpd in der Zeile MYSQLPassword ersetzen! Bitte beachten Sie, dass wir md5 als MYSQLCrypt-Methode verwenden, was bedeutet, dass wir die Passwörter der Benutzer als MD5-String in der Datenbank speichern, was viel sicherer ist als die Verwendung von Klartext-Passwörtern!
Jetzt erstellen wir die Systemstartlinks für PureFTPd und starten es:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service6 Füllen Sie Die Datenbank Und Testen
Um die Datenbank zu füllen, können Sie die MySQL-Shell verwenden:
mysql -u root -pUSE pureftpd;Jetzt erstellen wir den Benutzer exampleuser mit dem Status 1 (was bedeutet, dass sein FTP-Konto aktiv ist), das Passwort secret (das verschlüsselt mit der MD5-Funktion von MySQL gespeichert wird), die UID und GID 2001 (verwenden Sie die Benutzer-ID und Gruppen-ID des Benutzers/der Gruppe, die Sie am Ende von Schritt zwei erstellt haben!), das Home-Verzeichnis /home/www.example.com, eine Upload- und Download-Bandbreite von 100 KB/sec. (Kilobytes pro Sekunde) und ein Quota von 50 MB:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');quit;Jetzt öffnen Sie Ihr FTP-Client-Programm auf Ihrem Arbeitsplatz (etwas wie WS_FTP oder SmartFTP, wenn Sie ein Windows-System verwenden, oder gFTP auf einem Linux-Desktop) und versuchen Sie, sich zu verbinden. Als Hostnamen verwenden Sie server1.example.com (oder die IP-Adresse des Systems), der Benutzername ist exampleuser und das Passwort ist secret.
Wenn Sie sich verbinden können - herzlichen Glückwunsch! Wenn nicht, ist etwas schiefgelaufen.
Jetzt, wenn Sie ausführen
ls -l /homesollten Sie sehen, dass das Verzeichnis /home/www.example.com (das Home-Verzeichnis von exampleuser) automatisch erstellt wurde und es gehört ftpuser und ftpgroup (der Benutzer/die Gruppe, die wir am Ende von Schritt zwei erstellt haben):
[root@server1 system]# ls -l /home/
total 4
drwxr-xr-x 2 ftpuser ftpgroup 4096 Mai 2 02:35 www.example.com
[root@server1 system]# 7 Datenbankverwaltung
Für die meisten Menschen ist es einfacher, wenn sie eine grafische Benutzeroberfläche für MySQL haben; daher können Sie auch phpMyAdmin (in diesem Beispiel unter http://server1.example.com/phpMyAdmin/) verwenden, um die pureftpd-Datenbank zu verwalten.

Wann immer Sie einen neuen Benutzer erstellen möchten, müssen Sie einen Eintrag in der Tabelle ftpd erstellen, daher werde ich die Spalten dieser Tabelle hier erklären:
ftpd Tabelle:
- User: Der Name des virtuellen PureFTPd-Benutzers (z.B. exampleuser).
- status: 0 oder 1. 0 bedeutet, dass das Konto deaktiviert ist, der Benutzer kann sich nicht anmelden.
- Password: Das Passwort des virtuellen Benutzers. Stellen Sie sicher, dass Sie die MD5-Funktion von MySQL verwenden, um das Passwort verschlüsselt als MD5-String zu speichern:

- UID: Die Benutzer-ID des FTP-Benutzers, den Sie am Ende von Schritt zwei erstellt haben (z.B. 2001).
- GID: Die Gruppen-ID der FTP-Gruppe, die Sie am Ende von Schritt zwei erstellt haben (z.B. 2001).
- Dir: Das Home-Verzeichnis des virtuellen PureFTPd-Benutzers (z.B. /home/www.example.com). Wenn es nicht existiert, wird es erstellt, wenn sich der neue Benutzer zum ersten Mal über FTP anmeldet. Der virtuelle Benutzer wird in dieses Home-Verzeichnis eingesperrt, d.h. er kann nicht auf andere Verzeichnisse außerhalb seines Home-Verzeichnisses zugreifen.
- ULBandwidth: Upload-Bandbreite des virtuellen Benutzers in KB/sec. (Kilobytes pro Sekunde). 0 bedeutet unbegrenzt.
- DLBandwidth: Download-Bandbreite des virtuellen Benutzers in KB/sec. (Kilobytes pro Sekunde). 0 bedeutet unbegrenzt.
- comment: Hier können Sie einen beliebigen Kommentar eingeben (z.B. für Ihre interne Verwaltung). Normalerweise lassen Sie dieses Feld leer.
- ipaccess: Geben Sie hier IP-Adressen ein, die sich mit diesem FTP-Konto verbinden dürfen. * bedeutet, dass jede IP-Adresse sich verbinden darf.
- QuotaSize: Speicherplatz in MB (nicht KB, wie in ULBandwidth und DLBandwidth!), den der virtuelle Benutzer auf dem FTP-Server verwenden darf. 0 bedeutet unbegrenzt.
- QuotaFiles: Anzahl der Dateien, die der virtuelle Benutzer auf dem FTP-Server speichern darf. 0 bedeutet unbegrenzt.
8 Anonymer FTP
Wenn Sie ein anonymes FTP-Konto erstellen möchten (ein FTP-Konto, auf das jeder ohne Passwort zugreifen kann), benötigen Sie einen Benutzer und eine Gruppe namens ftp. Beide wurden automatisch erstellt, als Sie das Paket pure-ftpd installiert haben, sodass Sie sie nicht manuell erstellen müssen. Das Home-Verzeichnis von ftp ist jedoch standardmäßig /var/ftp, aber ich möchte das anonyme FTP-Verzeichnis in /home/ftp erstellen (die normalen Benutzer-FTP-Verzeichnisse befinden sich ebenfalls in /home, z.B. /home/www.example.com). Aber natürlich können Sie das Verzeichnis /var/ftp für anonymes FTP verwenden, wenn Sie es bevorzugen.
Wenn Sie /home/ftp verwenden möchten, öffnen Sie /etc/passwd und ändern Sie das Home-Verzeichnis des FTP-Benutzers von /var/ftp nach /home/ftp (tun Sie dies nicht, wenn Sie /var/ftp verwenden möchten):
vi /etc/passwd| [...] #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin [...] |
Dann verschieben Sie /var/ftp nach /home (tun Sie dies nicht, wenn Sie /var/ftp verwenden möchten):
mv /var/ftp /homeDann erstellen wir das Verzeichnis /home/ftp/incoming, das anonymen Benutzern das Hochladen von Dateien ermöglicht. Wir geben dem Verzeichnis /home/ftp/incoming die Berechtigungen 311, sodass Benutzer hochladen, aber keine Dateien in diesem Verzeichnis sehen oder herunterladen können. Das Verzeichnis /home/ftp erhält die Berechtigungen 555, die das Sehen und Herunterladen von Dateien ermöglichen:
chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/(Wenn Sie stattdessen /var/ftp verwenden möchten, ersetzen Sie /home/ftp durch /var/ftp in den obigen Befehlen.)
Anonyme Benutzer können sich anmelden und dürfen Dateien aus /home/ftp herunterladen, aber Uploads sind auf /home/ftp/incoming beschränkt (und sobald eine Datei in /home/ftp/incoming hochgeladen wurde, kann sie von dort nicht gelesen oder heruntergeladen werden; der Serveradministrator muss sie zuerst nach /home/ftp verschieben, um sie anderen zur Verfügung zu stellen).
Jetzt müssen wir PureFTPd für anonymes FTP konfigurieren. Öffnen Sie /etc/pure-ftpd/pure-ftpd.conf und stellen Sie sicher, dass Sie die folgenden Einstellungen darin haben:
vi /etc/pure-ftpd/pure-ftpd.conf| [...] NoAnonymous no [...] AntiWarez no [...] AnonymousBandwidth 8 [...] AnonymousCantUpload no [...] |
(Die Einstellung AnonymousBandwidth ist optional - sie ermöglicht es Ihnen, Upload- und Download-Bandbreiten für anonyme Benutzer zu begrenzen. 8 bedeutet 8 KB/sec. Verwenden Sie jeden Wert, den Sie möchten, oder kommentieren Sie die Zeile aus, wenn Sie keine Bandbreitenbegrenzungen wünschen.)
Schließlich starten wir PureFTPd neu:
systemctl restart pure-ftpd.service9 Links
- PureFTPd: http://www.pureftpd.org/
- MySQL: http://www.mysql.com/
- phpMyAdmin: http://www.phpmyadmin.net/
- Fedora: http://fedoraproject.org/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.