ProFTPd Installation · 3 min read · Nov 06, 2025
ISPConfig 3 ProFTPd Für Debian
ISPConfig 3 ProFTPd Für Debian
1 Einführung
Ich bin ein neuer Benutzer von ISPConfig und habe seit ein paar Jahren mit Linux experimentiert. Mein Server ist derzeit ein VPS mit OpenVZ und erlaubt es mir nicht, den standardmäßigen pureftpd zu verwenden, der mit ISPConfig geliefert wird, also habe ich angefangen, ProFTPd zu betrachten und festgestellt, dass es nicht sehr schwierig war, darauf umzusteigen.
2 Vorinstallation
Bitte beachten: Dies beinhaltet keine Quota-Unterstützung, da mein VPS dies nicht unterstützt. Wenn Sie Vorschläge oder Ideen haben, wie diese Integration verbessert werden kann, ohne ftp_user_edit.php in ISPConfig3 zu ändern, lassen Sie es mich bitte wissen. Diese Anweisungen wurden unter Debian 5.0 Lenny erstellt, sollten aber auch für 6.0 funktionieren. Für andere Distributionen müssen diese Anweisungen möglicherweise leicht angepasst werden.
Bitte beachten Sie auch: Dieser Prozess hat bei mir auf einem frischen Server und einer frischen ISPConfig 3-Installation gut funktioniert. Die Verwendung auf einem bestehenden Server erfordert, dass jeder erstellte FTP-Benutzer bearbeitet und gespeichert wird, und kann andere Probleme verursachen. Ich könnte in Zukunft ein einfaches PHP-Skript erstellen, um dies automatisch zu erledigen. Ich übernehme keine Verantwortung für Probleme, die auftreten können, also verwenden Sie dies AUF EIGENES RISIKO.
3 Installation
Führen Sie aus
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Run as standaloneGruppe & Benutzer erstellen
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd user” -g ftpgroup ftpuser
4 Datenbankkonfiguration
mysql -u root -p
Use dbispconfig
Führen Sie die Abfrage aus:
ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT '/sbin/nologin',
ADD `count` INT( 11 ) NOT NULL DEFAULT '0',
ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
CREATE TABLE ftp_group (
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';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');5 ProFTPd-Konfiguration
Bearbeiten Sie /usr/local/ispconfig/interface/lib/config.inc.php:
nano /usr/local/ispconfig/interface/lib/config.inc.phpSuchen Sie die Variable db_password.
Notieren Sie das Passwort für später.
Bearbeiten Sie /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.confSuchen Sie:
#Include /etc/proftpd/sql.confÄndern Sie zu:
Include /etc/proftpd/sql.confBearbeiten Sie /etc/proftpd/sql.conf
nano /etc/proftpd/sql.confLöschen Sie den gesamten Inhalt und ersetzen Sie ihn durch:
#
# Proftpd Beispielkonfiguration für SQL-basierte Authentifizierung.
#
# (Dies ist nicht zu verwenden, wenn Sie eine PAM-basierte SQL-Authentifizierung bevorzugen)
#
DefaultRoot ~
SQLBackend mysql
# Die Passwörter in MySQL sind mit CRYPT verschlüsselt
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# verwendet, um eine Verbindung zur Datenbank herzustellen
# databasename@host database_user user_password
SQLConnectInfo dbispconfig@localhost ispconfig _insertpasswordhere_
# Hier sagen wir ProFTPd die Namen der Datenbankspalten in der "usertable"
# mit denen wir interagieren möchten. Stimmen Sie die Namen mit denen in der db überein
SQLUserInfo ftp_user username password uid gid dir shell
# Hier sagen wir ProFTPd die Namen der Datenbankspalten in der "grouptable"
# mit denen wir interagieren möchten. Wieder stimmen die Namen mit denen in der db überein
SQLGroupInfo ftp_group groupname gid members
# setze min UID und GID - andernfalls sind diese jeweils 999
SQLMinID 500
# erstelle das Home-Verzeichnis eines Benutzers auf Anfrage, wenn es nicht existiert
CreateHome off
# Aktualisiere die Anzahl jedes Mal, wenn sich der Benutzer anmeldet
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Aktualisiere modified jedes Mal, wenn der Benutzer eine Datei hochlädt oder löscht
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
Stellen Sie sicher, dass Sie insertpasswordhere durch das Passwort ersetzen, das Sie von ISPConfig abgerufen haben.
Wenn Ihre MySQL-Datenbank auf einem anderen Server ist, ändern Sie localhost, um Ihren MySQL-Server darzustellen.
Bearbeiten: /etc/proftpd/modules.conf
nano /etc/proftpd/modules.confSuchen Sie:
#LoadModule mod_sql.cÄndern Sie zu:
LoadModule mod_sql.cSuchen Sie:
#LoadModule mod_sql_mysql.cÄndern Sie zu:
LoadModule mod_sql_mysql.cFühren Sie aus:
/etc/init.d/proftpd restart6 ISPConfig 3 Änderungen
Jetzt müssen wir eine der ISPConfig-Dateien ändern. Dies ist nicht ideal, da Sie bei einem Upgrade auf eine neue Version die Änderungen verlieren, aber es ist der einzige Weg, um ProFTPd zum Laufen zu bringen, den ich finden konnte.
Bearbeiten Sie /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Suchen Sie:
$uid = $web["system_user"];
$gid = $web["system_group"];Ersetzen Sie durch:
$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];Hinweis: Wenn Sie derzeit im Webpanel von ISPConfig angemeldet sind, müssen Sie sich abmelden, bevor die Änderungen auf Ihrem Computer registriert werden.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.