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 autonome

Cré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.php

Trouvez la variable db_password.

Notez le mot de passe pour plus tard.

Éditez /etc/proftpd/proftpd.conf

nano /etc/proftpd/proftpd.conf

Trouvez :

#Include /etc/proftpd/sql.conf

Changez en :

Include /etc/proftpd/sql.conf

Éditez /etc/proftpd/sql.conf

nano /etc/proftpd/sql.conf

Effacez 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.conf

Trouvez :

#LoadModule mod_sql.c

Changez en :

LoadModule mod_sql.c

Trouvez :

#LoadModule mod_sql_mysql.c

Changez en :

LoadModule mod_sql_mysql.c

Exécutez :

/etc/init.d/proftpd restart

6 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.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.