Server Hosting · 4 min read · Dec 09, 2025
Virtuelles Hosting Mit Proftpd Und MySQL (Incl. Quota) Auf Debian Etch
Virtuelles Hosting Mit Proftpd Und MySQL (Incl. Quota) Auf Debian Etch
Version 1.0
Autor: Falko Timme
Dieses Dokument beschreibt, wie man einen Proftpd-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 mit diesem Setup zeigen.
Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, die ebenfalls in diesem Howto installiert werden. phpMyAdmin ist eine komfortable grafische Benutzeroberfläche, was bedeutet, dass Sie sich nicht mit der Befehlszeile herumschlagen müssen.
Dieses Tutorial basiert auf Debian Etch (Debian 4.0). Sie sollten bereits ein grundlegendes Debian Etch-System eingerichtet haben, wie in den ersten sechs Kapiteln dieses Tutorials beschrieben: https://www.howtoforge.com/perfect_setup_debian_etch
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 funktionieren wird!
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:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
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
Überprüfen Sie dann mit
netstat -tap | grep mysql
auf welchen Adressen MySQL lauscht. Wenn die Ausgabe so aussieht:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld
was bedeutet, dass MySQL nur auf localhost.localdomain lauscht, dann sind Sie mit dem Passwort, das Sie zuvor festgelegt haben, sicher. Wenn die Ausgabe jedoch so aussieht:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld
sollten Sie auch ein MySQL-Passwort für Ihren Hostnamen festlegen, da sonst jeder auf Ihre Datenbank zugreifen und Daten ändern kann:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Installieren Sie Proftpd Mit MySQL-Unterstützung
Für Debian gibt es ein vorkonfiguriertes proftpd-mysql-Paket. Installieren Sie es als eigenständigen Daemon wie folgt:
apt-get install proftpd-mysql
Sie werden gefragt:
Proftpd von inetd oder eigenständig ausführen? <– eigenständig
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 "proftpd user" -g ftpgroup ftpuser
4 Erstellen Sie Die MySQL-Datenbank Für Proftpd
Jetzt erstellen wir eine Datenbank namens ftp und einen MySQL-Benutzer namens proftpd, den der Proftpd-Daemon später verwenden wird, um sich mit der FTP-Datenbank zu verbinden:
mysql -u root -p
create database ftp; GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Ersetzen Sie den String password durch das Passwort, das Sie für den MySQL-Benutzer proftpd verwenden möchten. Immer noch in der MySQL-Shell erstellen wir die benötigten Datenbanktabellen:
USE ftp;
CREATE TABLE ftpgroup ( groupname varchar(16) NOT NULL default '', gid smallint(6) NOT NULL default '5500', members varchar(16) NOT NULL default '', KEY groupname (groupname) ) TYPE=MyISAM COMMENT='ProFTP group table';
CREATE TABLE ftpquotalimits ( name varchar(30) default NULL, quota_type enum('user','group','class','all') NOT NULL default 'user', per_session enum('false','true') NOT NULL default 'false', limit_type enum('soft','hard') NOT NULL default 'soft', bytes_in_avail int(10) unsigned NOT NULL default '0', bytes_out_avail int(10) unsigned NOT NULL default '0', bytes_xfer_avail int(10) unsigned NOT NULL default '0', files_in_avail int(10) unsigned NOT NULL default '0', files_out_avail int(10) unsigned NOT NULL default '0', files_xfer_avail int(10) unsigned NOT NULL default '0' ) TYPE=MyISAM;
CREATE TABLE ftpquotatallies ( name varchar(30) NOT NULL default '', quota_type enum('user','group','class','all') NOT NULL default 'user', bytes_in_used int(10) unsigned NOT NULL default '0', bytes_out_used int(10) unsigned NOT NULL default '0', bytes_xfer_used int(10) unsigned NOT NULL default '0', files_in_used int(10) unsigned NOT NULL default '0', files_out_used int(10) unsigned NOT NULL default '0', files_xfer_used int(10) unsigned NOT NULL default '0' ) TYPE=MyISAM;
CREATE TABLE ftpuser ( id int(10) unsigned NOT NULL auto_increment, userid varchar(32) NOT NULL default '', passwd varchar(32) NOT NULL default '', uid smallint(6) NOT NULL default '5500', gid smallint(6) NOT NULL default '5500', homedir varchar(255) NOT NULL default '', shell varchar(16) NOT NULL default '/sbin/nologin', count int(11) NOT NULL default '0', accessed datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id), UNIQUE KEY userid (userid) ) TYPE=MyISAM COMMENT='ProFTP user table';
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 die IP-Adresse anstelle von server1.example.com verwenden) in einem Browser aufrufen und sich als proftpd anmelden. Dann können Sie sich die Datenbank ansehen. Später können Sie phpMyAdmin verwenden, um Ihren Proftpd-Server zu verwalten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.