Serveur FTP · 3 min read · Dec 16, 2025

Hébergement Virtuel Avec PureFTPd Et MySQL (Incl. Gestion Des Quotas Et De La Bande Passante)

Ce document décrit comment installer un serveur PureFTPd qui utilise des utilisateurs virtuels d’une base de données MySQL au lieu d’utilisateurs système réels. Cela est beaucoup plus performant et permet d’avoir des milliers d’utilisateurs ftp sur une seule machine. En plus de cela, je vais montrer l’utilisation de quota et de limites de bande passante d’upload/download avec cette configuration. Les mots de passe seront stockés chiffrés sous forme de chaînes MD5 dans la base de données.

Pour l’administration de la base de données MySQL, vous pouvez utiliser des outils basés sur le web comme phpMyAdmin qui seront également installés dans ce guide. phpMyAdmin est une interface graphique confortable, ce qui signifie que vous n’avez pas à vous embêter avec la ligne de commande.

Ce tutoriel est basé sur Debian Sarge (Debian 3.1). Vous devriez déjà avoir configuré un système Debian de base, comme décrit ici : https://www.howtoforge.com/perfect_setup_debian_sarge et https://www.howtoforge.com/perfect_setup_debian_sarge_p2. Cela devrait s’appliquer à d’autres distributions basées sur Debian comme Ubuntu, Knoppix, etc. sans modifications. Sur d’autres distributions comme SuSE, Fedora, Mandriva, etc., seule l’installation de PureFTPd est différente ; la configuration de PureFTPd devrait également s’appliquer à ces distributions.

Ce guide est destiné à être un guide pratique ; il ne couvre pas les bases théoriques. Elles sont traitées dans de nombreux autres documents sur le web.

Ce document est fourni sans aucune garantie ! Je tiens à dire que ce n’est pas la seule façon de configurer un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Installer MySQL Et phpMyAdmin

Tout cela peut être installé avec une seule commande :

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

Vous serez invité à répondre à quelques questions :

Activer suExec ? <– Oui
Configuration de mysql-server (Conseils d’installation) <– OK
Quel serveur web souhaitez-vous reconfigurer automatiquement ? <– apache, apache2
Voulez-vous que je redémarre apache maintenant ? <– Oui

Créez un mot de passe pour l’utilisateur MySQL root (remplacez yourrootsqlpassword par le mot de passe que vous souhaitez utiliser) :

mysqladmin -u root password yourrootsqlpassword

2 Installer PureFTPd Avec Support MySQL

Pour Debian, il existe un paquet préconfiguré pure-ftpd-mysql disponible. Installez-le en tant que démon autonome comme ceci :

apt-get install pure-ftpd-mysql

Exécuter pure-ftpd depuis inetd ou en tant que serveur autonome ? <– autonome
Voulez-vous que pure-ftpwho soit installé avec setuid root ? <– Non

Ensuite, nous créons un groupe ftp (“ ftpgroup “) et un utilisateur (“ ftpuser “) auxquels tous nos utilisateurs virtuels seront mappés. Remplacez l’identifiant de groupe et d’utilisateur 2001 par un numéro qui est libre sur votre système :

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “utilisateur pureftpd” -g ftpgroup ftpuser

3 Créer La Base De Données MySQL Pour PureFTPd

Maintenant, nous créons une base de données appelée pureftpd et un utilisateur MySQL nommé pureftpd que le démon PureFTPd utilisera plus tard pour se connecter à la base de données pureftpd :

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.
TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd. TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;

Remplacez la chaîne ftpdpass par le mot de passe que vous souhaitez utiliser pour l’utilisateur MySQL pureftpd. Toujours dans le shell MySQL, nous créons la table de base de données dont nous avons besoin (oui, il n’y a qu’une seule table !) :

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘’,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘’,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘
‘,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;*

quit;

Comme vous l’avez peut-être remarqué, avec la commande quit; nous avons quitté le shell MySQL et sommes de retour dans le shell Linux.

Au fait, (je suppose que le nom d’hôte de votre système de serveur ftp est server1.example.com) vous pouvez accéder à phpMyAdmin via http://server1.example.com/phpmyadmin/ (vous pouvez également utiliser l’adresse IP au lieu de server1.example.com) dans un navigateur et vous connecter en tant que pureftpd. Ensuite, vous pouvez jeter un œil à la base de données. Plus tard, vous pourrez utiliser phpMyAdmin pour administrer votre serveur PureFTPd.

Share: X/Twitter LinkedIn

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

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