Hébergement FTP · 6 min read · Dec 03, 2025
Hébergement Virtuel Avec PureFTPd Et MySQL (Incl. Gestion Des Quotas Et De La Bande Passante) Sur Mandriva 2009.0
Hébergement Virtuel Avec PureFTPd Et MySQL (Incl. Gestion Des Quotas Et De La Bande Passante) Sur Mandriva 2009.0
Version 1.0
Auteur : Falko Timme
Ce document décrit comment installer un serveur PureFTPd 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 des quotas et des limites de bande passante de téléchargement/téléversement avec cette configuration. Les mots de passe seront stockés sous forme de chaînes MD5 cryptées 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 Mandriva 2009.0. Vous devriez déjà avoir configuré un système de base Mandriva 2009.0, par exemple comme décrit dans les six premiers chapitres de ce tutoriel : https://www.howtoforge.com/perfect-server-mandriva-2009.0-i386
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ù c’est approprié.
2 Installer MySQL Et phpMyAdmin
Tout cela peut être installé avec une seule commande :
urpmi MySQL MySQL-client phpmyadmin
Par défaut, le réseau n’est pas activé dans le paquet MySQL de Mandriva 2009.0. Nous pouvons changer cela en commentant la ligne skip-networking dans /etc/my.cnf :
vi /etc/my.cnf
| [...] # Ne pas écouter sur un port TCP/IP du tout. Cela peut être une amélioration de la sécurité, # si tous les processus qui doivent se connecter à mysqld s'exécutent sur le même hôte. # Toute interaction avec mysqld doit se faire via des sockets Unix ou des pipes nommés. # Notez que l'utilisation de cette option sans activer les pipes nommés sous Windows # (via l'option "enable-named-pipe") rendra mysqld inutile ! # #skip-networking [...] |
Ensuite, nous créons les liens de démarrage système pour MySQL et Apache…
chkconfig mysqld on chkconfig httpd on
… et démarrons les deux services :
/etc/init.d/mysqld start /etc/init.d/httpd restart
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 mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Installer PureFTPd Avec Support MySQL
Le paquet PureFTPd de Mandriva prend en charge divers backends, tels que MySQL, PostgreSQL, LDAP, etc. Nous l’installons comme ceci :
urpmi pure-ftpd pure-ftpd-anon-upload pure-ftpd-anonymous
Ensuite, nous créons un groupe ftp (ftpgroup) et un utilisateur (ftpuser) auxquels tous nos utilisateurs virtuels seront mappés. Remplacez le groupe et l’ID 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
4 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 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 pureftpd. Ensuite, vous pouvez jeter un œil à la base de données. Plus tard, vous pouvez utiliser phpMyAdmin pour administrer votre serveur PureFTPd.
5 Configurer PureFTPd
Éditez /etc/pure-ftpd/pure-ftpd.conf et assurez-vous que les lignes ChrootEveryone, MySQLConfigFile et CreateHomeDir sont activées et ressemblent à ceci :
vi /etc/pure-ftpd/pure-ftpd.conf
| [...] ChrootEveryone yes [...] MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf [...] CreateHomeDir yes [...] |
Le paramètre ChrootEveryone fera en sorte que PureFTPd chroot chaque utilisateur virtuel dans son répertoire personnel afin qu’il ne puisse pas parcourir les répertoires et fichiers en dehors de son répertoire personnel. La ligne CreateHomeDir fera en sorte que PureFTPd crée le répertoire personnel d’un utilisateur lorsque l’utilisateur se connecte et que le répertoire personnel n’existe pas encore.
Ensuite, nous éditons /etc/pure-ftpd/pureftpd-mysql.conf. Il devrait ressembler à ceci :
cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf vi /etc/pure-ftpd/pureftpd-mysql.conf
| MYSQLSocket /var/lib/mysql/mysql.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 est TRÈS RECOMMANDÉ par rapport au texte clair MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") |
Assurez-vous de remplacer la chaîne ftpdpass par le vrai mot de passe pour l’utilisateur MySQL pureftpd dans la ligne MYSQLPassword ! Veuillez noter que nous utilisons md5 comme méthode MYSQLCrypt, ce qui signifie que nous stockerons les mots de passe des utilisateurs sous forme de chaîne MD5 dans la base de données, ce qui est beaucoup plus sécurisé que d’utiliser des mots de passe en texte clair !
Maintenant, nous démarrons PureFTPd :
/etc/init.d/pure-ftpd start
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.