Hébergement Virtuel · 4 min read · Dec 09, 2025

Hébergement Virtuel Avec Proftpd Et MySQL (Incl. Quota) Sur Debian Etch

Hébergement Virtuel Avec Proftpd Et MySQL (Incl. Quota) Sur Debian Etch

Version 1.0
Auteur : Falko Timme

Ce document décrit comment installer un serveur Proftpd qui utilise des utilisateurs virtuels à partir 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 quotas avec cette configuration.

Pour l’administration de la base de données MySQL, vous pouvez utiliser des outils basés sur le web comme phpMyAdmin qui sera également installé dans ce tutoriel. 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 Etch (Debian 4.0). Vous devriez déjà avoir configuré un système Debian Etch de base, comme décrit dans les six premiers chapitres de ce tutoriel : https://www.howtoforge.com/perfect_setup_debian_etch

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 Remarque Préliminaire

Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié.

2 Installer MySQL Et phpMyAdmin

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

apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2

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

Ensuite, vérifiez avec

netstat -tap | grep mysql

sur quelles adresses MySQL écoute. Si la sortie ressemble à ceci :

tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld

ce qui signifie que MySQL écoute uniquement sur localhost.localdomain, alors vous êtes en sécurité avec le mot de passe que vous avez défini précédemment. Mais si la sortie ressemble à ceci :

tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

vous devriez également définir un mot de passe MySQL pour votre nom d’hôte, car sinon, n’importe qui peut accéder à votre base de données et modifier des données :

mysqladmin -h server1.example.com -u root password yourrootsqlpassword

3 Installer Proftpd Avec Support MySQL

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

apt-get install proftpd-mysql

On vous posera la question suivante :

Exécuter proftpd depuis inetd ou en autonome ? <– autonome

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 proftpd" -g ftpgroup ftpuser

4 Créer La Base De Données MySQL Pour Proftpd

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

mysql -u root -p
create database ftp;  
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';  
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;

Remplacez la chaîne password par le mot de passe que vous souhaitez utiliser pour l’utilisateur MySQL proftpd. Toujours dans le shell MySQL, nous créons les tables de base de données dont nous avons besoin :

USE ftp;
CREATE TABLE ftpgroup (  
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';
CREATE TABLE ftpquotalimits (  
name varchar(30) default NULL,  
quota_type enum('user','group','class','all') NOT NULL default 'user',  
per_session enum('false','true') NOT NULL default 'false',  
limit_type enum('soft','hard') NOT NULL default 'soft',  
bytes_in_avail int(10) unsigned NOT NULL default '0',  
bytes_out_avail int(10) unsigned NOT NULL default '0',  
bytes_xfer_avail int(10) unsigned NOT NULL default '0',  
files_in_avail int(10) unsigned NOT NULL default '0',  
files_out_avail int(10) unsigned NOT NULL default '0',  
files_xfer_avail int(10) unsigned NOT NULL default '0'  
) TYPE=MyISAM;
CREATE TABLE ftpquotatallies (  
name varchar(30) NOT NULL default '',  
quota_type enum('user','group','class','all') NOT NULL default 'user',  
bytes_in_used int(10) unsigned NOT NULL default '0',  
bytes_out_used int(10) unsigned NOT NULL default '0',  
bytes_xfer_used int(10) unsigned NOT NULL default '0',  
files_in_used int(10) unsigned NOT NULL default '0',  
files_out_used int(10) unsigned NOT NULL default '0',  
files_xfer_used int(10) unsigned NOT NULL default '0'  
) TYPE=MyISAM;
CREATE TABLE ftpuser (  
id int(10) unsigned NOT NULL auto_increment,  
userid varchar(32) NOT NULL default '',  
passwd varchar(32) NOT NULL default '',  
uid smallint(6) NOT NULL default '5500',  
gid smallint(6) NOT NULL default '5500',  
homedir varchar(255) NOT NULL default '',  
shell varchar(16) NOT NULL default '/sbin/nologin',  
count int(11) NOT NULL default '0',  
accessed datetime NOT NULL default '0000-00-00 00:00:00',  
modified datetime NOT NULL default '0000-00-00 00:00:00',  
PRIMARY KEY (id),  
UNIQUE KEY userid (userid)  
) TYPE=MyISAM COMMENT='Table utilisateur ProFTP';
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 sous http://server1.example.com/phpmyadmin/ (vous pouvez utiliser l’adresse IP au lieu de server1.example.com) dans un navigateur et vous connecter en tant que proftpd. Ensuite, vous pouvez jeter un œil à la base de données. Plus tard, vous pouvez utiliser phpMyAdmin pour gérer votre serveur Proftpd.

Share: X/Twitter LinkedIn

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

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