ISPConfig 3 ProFTPd pour Debian
1 Présentation
Je suis un nouvel utilisateur d'ISPConfig et je joue avec Linux depuis quelques années maintenant. Mon serveur est actuellement un VPS avec OpenVZ et il ne me permet pas d'exécuter le pureftpd par défaut fourni avec ISPConfig, alors j'ai commencé à regarder dans ProFTPd et j'ai trouvé qu'il n'était pas très difficile de passer à l'utiliser.
2 Pré-installation
Veuillez noter :cela n'inclut pas la prise en charge des quotas car mon VPS ne la prend pas en charge. Si vous avez des suggestions ou des idées sur la façon d'améliorer cette intégration sans avoir à modifier ftp_user_edit.php dans ISPConfig3, faites-le moi savoir. Ces instructions ont été faites sous Debian 5.0 Lenny mais devraient fonctionner de la même manière pour 6.0. Pour les autres distributions, ces instructions peuvent devoir être légèrement modifiées.
Remarque également :ce processus a bien fonctionné pour moi sur un nouveau serveur et une installation ISPConfig 3. L'utiliser sur un serveur existant nécessitera d'entrer et de modifier/sauvegarder chaque utilisateur ftp qui a été créé, et peut causer d'autres problèmes. Je peux créer un simple script php pour le faire automatiquement à l'avenir. Je ne suis pas responsable des problèmes qui pourraient survenir, veuillez donc utiliser ceci À VOS PROPRES RISQUES.
3 Installation
Exécuter
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Run as standalone
Créer un groupe et un utilisateur
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "utilisateur proftpd" -gftpgroup ftpuser
4 Configuration de la base de données
mysql -u root -p
Utilisez dbispconfig
Exécuter la requête :
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 Configuration ProFTPd
Modifiez /usr/local/ispconfig/interface/lib/config.inc.php :
nano /usr/local/ispconfig/interface/lib/config.inc.php
Trouvez la variable db_password.
Notez le mot de passe pour plus tard.
Modifier /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
Rechercher :
#Include /etc/proftpd/sql.conf
Remplacer par :
Include /etc/proftpd/sql.conf
Modifier /etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
Effacez tout le contenu et remplacez-le par :
#
# 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>
Assurez-vous de remplacer _insertpasswordhere_ par le mot de passe que vous avez récupéré depuis ISPConfig.
Si votre base de données MySQL se trouve sur un autre serveur, changez localhost pour représenter votre serveur MySQL.
Modifier :/etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
Rechercher :
#LoadModule mod_sql.c
Remplacer par :
LoadModule mod_sql.c
Rechercher :
#LoadModule mod_sql_mysql.c
Remplacer par :
LoadModule mod_sql_mysql.c
Exécuter :
/etc/init.d/proftpd restart
6 modifications d'ISPConfig 3
Nous devons maintenant modifier l'un des fichiers ispconfig. Ce n'est pas idéal, car si vous mettez à niveau vers une nouvelle version, vous perdrez les modifications, mais c'est la seule façon de faire fonctionner proftpd que j'ai pu trouver.
Modifier /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano/usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Rechercher :
$uid = $web["system_user"]; $gid = $web["system_group"];
Remplacer par :
$userinfo = posix_getpwnam($web["system_user"]); $uid = $userinfo['uid']; $gid = $userinfo['gid'];
Remarque :si vous êtes actuellement connecté au panneau Web d'ISPConfig, vous devez vous déconnecter avant que les modifications ne soient enregistrées sur votre machine.