Configuration Serveur · 4 min read · Nov 06, 2025
ISPConfig 3 ProFTPd Pour Debian
ISPConfig 3 ProFTPd Pour Debian
1 Introduction
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 qui vient avec ISPConfig, donc j’ai commencé à m’intéresser à ProFTPd, et j’ai découvert qu’il n’était pas très difficile de passer à son utilisation.
2 Pré-Installation
Veuillez noter : Cela n’inclut pas le support de quota car mon VPS ne le 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, veuillez me le faire savoir. Ces instructions ont été réalisées sur Debian 5.0 Lenny mais devraient fonctionner de la même manière pour 6.0. Pour d’autres distributions, ces instructions peuvent devoir être légèrement modifiées.
Notez également : Ce processus a bien fonctionné pour moi sur un serveur frais et une installation d’ISPConfig 3. L’utilisation de cela sur un serveur existant nécessitera d’entrer et de modifier/enregistrer chaque utilisateur ftp qui a été créé, et peut causer d’autres problèmes. Je pourrais créer un simple script php pour faire cela automatiquement à l’avenir. Je ne suis pas responsable des problèmes qui pourraient survenir, donc veuillez utiliser cela À VOS PROPRES RISQUES.
3 Installation
Exécutez
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Exécuter en tant qu'application autonomeCréer un Groupe & Utilisateur
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “utilisateur proftpd” -g ftpgroup ftpuser
4 Configuration de la Base de Données
mysql -u root -p
Utiliser dbispconfig
Exécutez 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='Table de groupe ProFTP';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');5 Configuration de ProFTPd
Éditez /usr/local/ispconfig/interface/lib/config.inc.php :
nano /usr/local/ispconfig/interface/lib/config.inc.phpTrouvez la variable db_password.
Notez le mot de passe pour plus tard.
Éditez /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.confTrouvez :
#Include /etc/proftpd/sql.confChangez en :
Include /etc/proftpd/sql.confÉditez /etc/proftpd/sql.conf
nano /etc/proftpd/sql.confEffacez tout le contenu et remplacez par :
#
# Configuration d'exemple Proftpd pour l'authentification basée sur SQL.
#
# (Cela ne doit pas être utilisé si vous préférez une authentification SQL basée sur PAM)
#
DefaultRoot ~
SQLBackend mysql
# Les mots de passe dans MySQL sont cryptés en utilisant CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# utilisé pour se connecter à la base de données
# nomdelabasededonnées@hôte utilisateur_base_de_données mot_de_passe_utilisateur
SQLConnectInfo dbispconfig@localhost ispconfig _insertpasswordhere_
# Ici, nous disons à ProFTPd les noms des colonnes de la base de données dans la "table des utilisateurs"
# avec lesquelles nous voulons qu'il interagisse. Faites correspondre les noms avec ceux de la base de données
SQLUserInfo ftp_user username password uid gid dir shell
# Ici, nous disons à ProFTPd les noms des colonnes de la base de données dans la "table des groupes"
# avec lesquelles nous voulons qu'il interagisse. Encore une fois, les noms correspondent à ceux de la base de données
SQLGroupInfo ftp_group groupname gid members
# définir UID et GID min - sinon ceux-ci sont 999 chacun
SQLMinID 500
# créer le répertoire personnel d'un utilisateur à la demande s'il n'existe pas
CreateHome off
# Mettre à jour le compteur chaque fois que l'utilisateur se connecte
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Mettre à jour modifié chaque fois que l'utilisateur télécharge ou supprime un fichier
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
Assurez-vous de changer insertpasswordhere par le mot de passe que vous avez récupéré d’ISPConfig.
Si votre base de données MySQL est sur un autre serveur, changez localhost pour représenter votre serveur MySQL.
Éditez : /etc/proftpd/modules.conf
nano /etc/proftpd/modules.confTrouvez :
#LoadModule mod_sql.cChangez en :
LoadModule mod_sql.cTrouvez :
#LoadModule mod_sql_mysql.cChangez en :
LoadModule mod_sql_mysql.cExécutez :
/etc/init.d/proftpd restart6 Changements ISPConfig 3
Maintenant, nous devons changer l’un des fichiers d’ispconfig. Ce n’est pas idéal, car si vous mettez à niveau vers une nouvelle version, vous perdrez les modifications, mais c’est le seul moyen de faire fonctionner proftpd que j’ai pu trouver.
Éditez /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Trouvez :
$uid = $web["system_user"];
$gid = $web["system_group"];Remplacez par :
$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];Note : 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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.