Server Hosting · 5 min read · Dec 05, 2025
Virtuelles Hosting Mit PureFTPd Und MySQL (Incl. Quota Und Bandbreitenmanagement) Auf Mandriva 2007 Spring
Virtuelles Hosting Mit PureFTPd Und MySQL (Incl. Quota Und Bandbreitenmanagement) Auf Mandriva 2007 Spring
Version 1.0
Autor: Falko Timme
Dieses Dokument beschreibt, wie man einen PureFTPd-Server installiert, der virtuelle Benutzer aus einer MySQL-Datenbank anstelle von echten Systembenutzern verwendet. Dies ist viel leistungsfähiger und ermöglicht es, Tausende von FTP-Benutzern auf einer einzigen Maschine zu haben. Darüber hinaus werde ich die Verwendung von Quota und Upload-/Download-Bandbreitenlimits mit diesem Setup zeigen. Passwörter werden verschlüsselt als MD5-Strings in der Datenbank gespeichert.
Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, das ebenfalls in diesem Howto installiert wird. phpMyAdmin ist eine komfortable grafische Benutzeroberfläche, was bedeutet, dass Sie sich nicht mit der Befehlszeile herumschlagen müssen.
Dieses Tutorial basiert auf Mandriva 2007 Spring (Mandriva 2007.1). Sie sollten bereits ein grundlegendes Mandriva 2007 Spring-System eingerichtet haben, beispielsweise wie in den ersten vier Kapiteln dieses Tutorials beschrieben: https://www.howtoforge.com/perfect_server_mandriva_spring_2007
Dieses Howto ist als praktische Anleitung gedacht; es behandelt nicht die theoretischen Hintergründe. Diese werden in vielen anderen Dokumenten im Web behandelt.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktioniert!
1 Vorbemerkung
In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls ersetzen.
2 Installieren Sie MySQL Und phpMyAdmin
Dies kann alles mit einem einzigen Befehl installiert werden:
urpmi MySQL MySQL-client phpmyadmin
Standardmäßig ist das Networking im MySQL-Paket von Mandriva 2007 Spring nicht aktiviert. Wir können dies ändern, indem wir die Zeile skip-networking in /etc/my.cnf auskommentieren:
vi /etc/my.cnf
| [...] # Hören Sie überhaupt nicht auf einem TCP/IP-Port. Dies kann eine Sicherheitsverbesserung sein, # wenn alle Prozesse, die eine Verbindung zu mysqld herstellen müssen, auf demselben Host ausgeführt werden. # Alle Interaktionen mit mysqld müssen über Unix-Sockets oder benannte Pipes erfolgen. # Beachten Sie, dass die Verwendung dieser Option ohne Aktivierung benannter Pipes unter Windows # (über die Option "enable-named-pipe") mysqld unbrauchbar macht! # #skip-networking [...] |
Danach starten wir MySQL und Apache:
/etc/init.d/mysqld start /etc/init.d/httpd start
Erstellen Sie ein Passwort für den MySQL-Benutzer root (ersetzen Sie yourrootsqlpassword durch das Passwort, das Sie verwenden möchten):
mysqladmin -u root password yourrootsqlpassword mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Installieren Sie PureFTPd Mit MySQL-Unterstützung
Das PureFTPd-Paket von Mandriva unterstützt verschiedene Backends, wie MySQL, PostgreSQL, LDAP usw. Wir installieren es wie folgt:
urpmi pure-ftpd pure-ftpd-anon-upload pure-ftpd-anonymous
Dann erstellen wir eine FTP-Gruppe (ftpgroup) und einen Benutzer (ftpuser), auf die alle unsere virtuellen Benutzer abgebildet werden. Ersetzen Sie die Gruppen- und Benutzer-ID 2001 durch eine Nummer, die auf Ihrem System frei ist:
groupadd -g 2001 ftpgroup useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
4 Erstellen Sie Die MySQL-Datenbank Für PureFTPd
Jetzt erstellen wir eine Datenbank namens pureftpd und einen MySQL-Benutzer namens pureftpd, den der PureFTPd-Daemon später verwenden wird, um eine Verbindung zur pureftpd-Datenbank herzustellen:
mysql -u root -p
CREATE DATABASE pureftpd; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass'; FLUSH PRIVILEGES;
Ersetzen Sie den String ftpdpass durch das Passwort, das Sie für den MySQL-Benutzer pureftpd verwenden möchten. Immer noch in der MySQL-Shell erstellen wir die benötigte Datenbanktabelle (ja, es gibt nur eine Tabelle!):
USE pureftpd;
CREATE TABLE ftpd ( User varchar(16) NOT NULL default '', status enum('0','1') NOT NULL default '0', Password varchar(64) NOT NULL default '', Uid varchar(11) NOT NULL default '-1', Gid varchar(11) NOT NULL default '-1', Dir varchar(128) NOT NULL default '', ULBandwidth smallint(5) NOT NULL default '0', DLBandwidth smallint(5) NOT NULL default '0', comment tinytext NOT NULL, ipaccess varchar(15) NOT NULL default '*', QuotaSize smallint(5) NOT NULL default '0', QuotaFiles int(11) NOT NULL default 0, PRIMARY KEY (User), UNIQUE KEY User (User) ) TYPE=MyISAM;
quit;
Wie Sie vielleicht bemerkt haben, haben wir mit dem Befehl quit; die MySQL-Shell verlassen und sind zurück in der Linux-Shell.
Übrigens, (ich gehe davon aus, dass der Hostname Ihres FTP-Servers server1.example.com ist) können Sie phpMyAdmin unter http://server1.example.com/phpmyadmin/ (Sie können auch die IP-Adresse anstelle von server1.example.com verwenden) in einem Browser aufrufen und sich als Benutzer pureftpd anmelden. Dann können Sie sich die Datenbank ansehen. Später können Sie phpMyAdmin verwenden, um Ihren PureFTPd-Server zu verwalten.
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 Heimatverzeichnis chrootet, sodass er nicht in Verzeichnissen und Dateien außerhalb seines Heimatverzeichnisses browsen kann. Die Zeile CreateHomeDir sorgt dafür, dass PureFTPd das Heimatverzeichnis eines Benutzers erstellt, wenn der Benutzer sich anmeldet und das Heimatverzeichnis 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() oder password() - md5 ist SEHR EMPFEHLENSWERT gegenüber Klartext 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 durch das tatsächliche 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 starten wir PureFTPd:
/etc/init.d/pure-ftpd start
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.