Hébergement Virtuel · 5 min read · Feb 11, 2026
Hébergement Virtuel Avec vsftpd Et MySQL Sur Debian Squeeze
Vsftpd est l’un des serveurs FTP les plus sécurisés et rapides pour Linux. En général, vsftpd est configuré pour fonctionner avec des utilisateurs système. Ce document décrit comment installer un serveur vsftpd 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.
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 Squeeze (Debian 6.0). Vous devriez déjà avoir configuré un système Debian Squeeze de base.
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 garantie d’aucune sorte ! 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 si nécessaire.
2 Installer vsftpd, MySQL Et phpMyAdmin
Vsftpd n’a pas de support MySQL intégré, nous devons donc utiliser PAM pour authentifier contre la base de données MySQL. Nous installons donc libpam-mysql en plus de vsftpd, MySQL et phpMyAdmin :
apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadminVous serez invité à répondre aux questions suivantes :
Nouveau mot de passe pour l’utilisateur MySQL “root” : <– votremotdepasseMySQLroot
Répétez le mot de passe pour l’utilisateur MySQL “root” : <– votremotdepasseMySQLroot
Serveur web à reconfigurer automatiquement : <– apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <– Non
3 Créer La Base De Données MySQL Pour vsftpd
Maintenant, nous créons une base de données appelée vsftpd et un utilisateur MySQL nommé vsftpd que le démon vsftpd utilisera plus tard pour se connecter à la base de données vsftpd :
mysql -u root -pCREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'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 vsftpd. 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 vsftpd;CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = 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 sous 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 qu’utilisateur vsftpd. Ensuite, vous pouvez jeter un œil à la base de données. Plus tard, vous pouvez utiliser phpMyAdmin pour administrer votre serveur vsftpd.
4 Configurer vsftpd
Tout d’abord, nous créons un utilisateur non privilégié appelé vsftpd (avec le répertoire personnel /home/vsftpd) appartenant au groupe nogroup. Nous exécuterons vsftpd sous cet utilisateur, et les répertoires FTP de nos utilisateurs virtuels seront dans le répertoire /home/vsftpd (par exemple, /home/vsftpd/user1, /home/vsftpd/user2, etc.).
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpdEnsuite, nous faisons une sauvegarde du fichier original /etc/vsftpd.conf et créons le nôtre :
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null > /etc/vsftpd.conf
vi /etc/vsftpd.confLe fichier doit contenir les éléments suivants :
| listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |
Les options de configuration sont expliquées sur http://vsftpd.beasts.org/vsftpd_conf.html. Les options importantes pour notre configuration virtuelle sont chroot_local_user, guest_enable, guest_username, user_sub_token, local_root et virtual_use_local_privs.
Avec l’option user_config_dir, vous pouvez spécifier un répertoire pour les fichiers de configuration par utilisateur qui remplacent certaines parties des paramètres globaux. C’est totalement optionnel et à vous de décider si vous souhaitez utiliser cette fonctionnalité. Cependant, nous devrions créer ce répertoire maintenant :
mkdir /etc/vsftpd_user_confMaintenant, nous devons configurer PAM afin qu’il utilise la base de données MySQL pour authentifier nos utilisateurs FTP virtuels au lieu de /etc/passwd et /etc/shadow. La configuration PAM pour vsftpd se trouve dans /etc/pam.d/vsftpd. Nous faisons une sauvegarde du fichier original et créons un nouveau fichier comme ceci :
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd| auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |
Veuillez vous assurer que vous remplacez le mot de passe MySQL par le vôtre !
Ensuite, nous redémarrons vsftpd :
/etc/init.d/vsftpd restart5 Créer Le Premier Utilisateur Virtuel
Pour peupler la base de données, vous pouvez utiliser le shell MySQL :
mysql -u root -pUSE vsftpd;Maintenant, nous créons l’utilisateur virtuel testuser avec le mot de passe secret (qui sera stocké de manière cryptée en utilisant la fonction PASSWORD de MySQL) :
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
quit;directory de testuser est /home/vsftpd/testuser ; malheureusement, vsftpd ne crée pas automatiquement ce répertoire s’il n’existe pas. Par conséquent, nous le créons manuellement maintenant et le rendons propriétaire de l’utilisateur vsftpd et du groupe nogroup :
mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuserMaintenant, ouvrez votre programme client FTP sur votre station de travail (quelque chose comme FileZilla ou FireFTP) et essayez de vous connecter. Comme nom d’hôte, utilisez server1.example.com (ou l’adresse IP du système), le nom d’utilisateur est testuser et le mot de passe est secret.
Si vous parvenez à vous connecter - félicitations ! Sinon, quelque chose a mal tourné.
6 Administration De La Base De Données
Pour la plupart des gens, il est plus facile d’avoir une interface graphique pour MySQL ; par conséquent, vous pouvez également utiliser phpMyAdmin (dans cet exemple sous http://server1.example.com/phpmyadmin/) pour administrer la base de données vsftpd.

Chaque fois que vous créez ou modifiez un utilisateur, assurez-vous d’utiliser la fonction PASSWORD de MySQL pour crypter le mot de passe de cet utilisateur. De plus, lorsque vous créez un nouvel utilisateur virtuel, n’oubliez pas de créer le répertoire personnel de cet utilisateur dans le shell, comme indiqué à la fin du chapitre précédent.

7 Liens
- vsftpd: http://vsftpd.beasts.org/
- Debian: http://www.debian.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.