ISPConfig 3 ProFTPd für Debian
1 Einführung
Ich bin ein neuer Benutzer von ISPConfig und spiele jetzt seit einigen Jahren mit Linux. Mein Server ist derzeit ein VPS mit OpenVZ und erlaubt mir nicht, den standardmäßigen pureftpd auszuführen, der mit ISPConfig geliefert wird, also begann ich, mich mit ProFTPd zu beschäftigen, und stellte fest, dass es nicht sehr schwierig war, darauf umzusteigen.
2 Vorinstallation
Bitte beachten Sie:Dies beinhaltet keine Kontingentunterstützung, da mein VPS dies nicht unterstützt. Wenn Sie Vorschläge oder Ideen haben, wie Sie diese Integration verbessern können, ohne ftp_user_edit.php in ISPConfig3 ändern zu müssen, lassen Sie es mich bitte wissen. Diese Anweisungen wurden unter Debian 5.0 Lenny erstellt, sollten aber für 6.0 genauso funktionieren. Für andere Distributionen muss diese Anleitung ggf. leicht modifiziert werden.
Beachten Sie auch:Dieser Vorgang hat bei mir auf einem neuen Server und einer ISPConfig 3-Installation gut funktioniert. Wenn Sie dies auf einem vorhandenen Server verwenden, müssen Sie jeden erstellten FTP-Benutzer öffnen und bearbeiten/speichern, und es können andere Probleme auftreten. Ich kann ein einfaches PHP-Skript erstellen, um dies in Zukunft automatisch zu tun. Ich übernehme keine Verantwortung für eventuell auftretende Probleme, also verwenden Sie dies bitte AUF IHR EIGENES RISIKO.
3 Installation
Ausführen
apt-get entfernen pure-ftpd-common pure-ftpd-mysql
apt-get installieren proftpd proftpd-mod-mysql
Run as standalone
Gruppe und Benutzer erstellen
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -gftpgroup ftpuser
4 Datenbankkonfiguration
mysql -u root -p
Verwenden Sie dbispconfig
Abfrage ausführen:
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.php
Suchen Sie die Variable db_password.
Passwort für später notieren.
Bearbeiten Sie /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
Suchen:
#Include /etc/proftpd/sql.conf
Ändern zu:
Include /etc/proftpd/sql.conf
Bearbeiten Sie /etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
Löschen Sie alle Inhalte und ersetzen Sie sie durch:
#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#
<IfModule mod_sql.c>
DefaultRoot ~
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# [email protected] database_user user_password
SQLConnectInfo [email protected] ispconfig _insertpasswordhere_
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftp_user username password uid gid dir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftp_group groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome off
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
</IfModule>
Achten Sie darauf, _insertpasswordhere_ in das Passwort zu ändern, das Sie von ISPConfig erhalten haben.
Wenn sich Ihre MySQL-Datenbank auf einem anderen Server befindet, ändern Sie localhost, um Ihren MySQL-Server darzustellen.
Bearbeiten:/etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
Suchen:
#LoadModule mod_sql.c
Ändern zu:
LoadModule mod_sql.c
Suchen:
#LoadModule mod_sql_mysql.c
Ändern zu:
LoadModule mod_sql_mysql.c
Ausführen:
/etc/init.d/proftpd restart
6 ISPConfig 3 Änderungen
Jetzt müssen wir eine der ispconfig-Dateien ändern. Dies ist nicht ideal, denn wenn Sie auf eine neue Version aktualisieren, verlieren Sie die Änderungen, aber es ist die einzige Möglichkeit, proftpd zum Laufen zu bringen, die 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:
$uid = $web["system_user"]; $gid = $web["system_group"];
Ersetzen 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 Änderungen auf Ihrem Computer registriert werden.