Hébergement · 7 min read · Jan 20, 2026
Hébergement Virtuel Avec PureFTPd Et MySQL (Incl. Gestion Des Quotas Et De La Bande Passante) Sur Debian Lenny - Page 2
5 Configurer PureFTPd
Éditez /etc/pure-ftpd/db/mysql.conf. Cela devrait ressembler à ceci :
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
vi /etc/pure-ftpd/db/mysql.conf| MYSQLSocket /var/run/mysqld/mysqld.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() ou password() - md5 est TRÈS RECOMMANDÉ pour le 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 !
Ensuite, créez le fichier /etc/pure-ftpd/conf/ChrootEveryone qui contient simplement la chaîne yes :
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryoneCela 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.
Créez également le fichier /etc/pure-ftpd/conf/CreateHomeDir qui contient à nouveau simplement la chaîne yes :
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDirCela fera en sorte que PureFTPd crée un répertoire personnel pour l’utilisateur lorsque l’utilisateur se connecte et que le répertoire personnel n’existe pas encore.
Maintenant, nous devons configurer PureFTPd en tant que démon autonome (il est actuellement contrôlé par inetd). Pour ce faire, nous ouvrons /etc/default/pure-ftpd-common et changeons la valeur du paramètre STANDALONE_OR_INETD en standalone :
vi /etc/default/pure-ftpd-common| # Configuration pour pure-ftpd # (ce fichier est source par /bin/sh, éditez en conséquence) # STANDALONE_OR_INETD # les valeurs valides sont "standalone" et "inetd". # Tout changement ici remplace le paramètre dans debconf. STANDALONE_OR_INETD=standalone # VIRTUALCHROOT: # s'il faut utiliser un binaire avec le support de virtualchroot # les valeurs valides sont "true" ou "false" # Tout changement ici remplace le paramètre dans debconf. VIRTUALCHROOT=false # UPLOADSCRIPT : si cela est défini et que le démon est exécuté en mode autonome, # pure-uploadscript sera également exécuté pour lancer le programme donné ci-dessous # pour gérer les téléchargements. voir /usr/share/doc/pure-ftpd/README.gz ou # pure-uploadscript(8) # exemple : UPLOADSCRIPT=/usr/local/sbin/uploadhandler.pl UPLOADSCRIPT= # si défini, pure-uploadscript lancera $UPLOADSCRIPT s'exécutant avec le # uid et gid donnés UPLOADUID= UPLOADGID= |
Ensuite, nous modifions /etc/inetd.conf et commentons la ligne ftp :
vi /etc/inetd.conf| [...] #:STANDARD: Ce sont des services standard. #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper [...] |
Ensuite, nous redémarrons Inetd et PureFTPd :
/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql restart6 Peupler La Base De Données Et Tester
Pour peupler la base de données, vous pouvez utiliser le shell MySQL :
mysql -u root -pUSE pureftpd;Maintenant, nous créons l’utilisateur exampleuser avec le statut 1 (ce qui signifie que son compte ftp est actif), le mot de passe secret (qui sera stocké crypté en utilisant la fonction MD5 de MySQL), le UID et GID 2001 (utilisez l’identifiant d’utilisateur et l’identifiant de groupe que vous avez créés à la fin de l’étape deux !), le répertoire personnel /home/www.example.com, une bande passante de téléchargement et de téléchargement de 100 Ko/s (kilooctets par seconde), et un quota de 50 Mo :
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');quit;Maintenant, ouvrez votre programme client FTP sur votre station de travail (quelque chose comme WS_FTP ou SmartFTP si vous êtes sur un système Windows ou gFTP sur un bureau Linux) et essayez de vous connecter. Comme nom d’hôte, vous utilisez server1.example.com (ou l’adresse IP du système), le nom d’utilisateur est exampleuser, et le mot de passe est secret.
Si vous parvenez à vous connecter - félicitations ! Sinon, quelque chose a mal tourné.
Maintenant, si vous exécutez
ls -l /homevous devriez voir que le répertoire /home/www.example.com (répertoire personnel d’exampleuser) a été automatiquement créé, et il est possédé par ftpuser et ftpgroup (l’utilisateur/groupe que nous avons créés à la fin de l’étape trois) :
server1:~# ls -l /home
total 8
drwxr-xr-x 2 administrator administrator 4096 2009-02-16 13:18 administrator
drwxr-xr-x 2 ftpuser ftpgroup 4096 2009-06-05 16:09 www.example.com
server1:~#7 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 pureftpd.

Chaque fois que vous souhaitez créer un nouvel utilisateur, vous devez créer une entrée dans la table ftpd, donc je vais expliquer les colonnes de cette table ici :
Table ftpd :
- User : Le nom de l’utilisateur virtuel PureFTPd (par exemple, exampleuser).
- status : 0 ou 1. 0 signifie que le compte est désactivé, l’utilisateur ne peut pas se connecter.
- Password : Le mot de passe de l’utilisateur virtuel. Assurez-vous d’utiliser la fonction MD5 de MySQL pour enregistrer le mot de passe crypté sous forme de chaîne MD5 :

- UID : L’identifiant d’utilisateur de l’utilisateur ftp que vous avez créé à la fin de l’étape deux (par exemple, 2001).
- GID : L’identifiant de groupe du groupe ftp que vous avez créé à la fin de l’étape deux (par exemple, 2001).
- Dir : Le répertoire personnel de l’utilisateur virtuel PureFTPd (par exemple, /home/www.example.com). S’il n’existe pas, il sera créé lorsque le nouvel utilisateur se connectera pour la première fois via FTP. L’utilisateur virtuel sera enfermé dans ce répertoire personnel, c’est-à-dire qu’il ne peut pas accéder à d’autres répertoires en dehors de son répertoire personnel.
- ULBandwidth : Bande passante de téléchargement de l’utilisateur virtuel en Ko/s (kilooctets par seconde). 0 signifie illimité.
- DLBandwidth : Bande passante de téléchargement de l’utilisateur virtuel en Ko/s (kilooctets par seconde). 0 signifie illimité.
- comment : Vous pouvez entrer n’importe quel commentaire ici (par exemple, pour votre administration interne) ici. Normalement, vous laissez ce champ vide.
- ipaccess : Entrez ici les adresses IP qui sont autorisées à se connecter à ce compte FTP. * signifie que n’importe quelle adresse IP est autorisée à se connecter.
- QuotaSize : Espace de stockage en Mo (pas en Ko, comme dans ULBandwidth et DLBandwidth !) que l’utilisateur virtuel est autorisé à utiliser sur le serveur FTP. 0 signifie illimité.
- QuotaFiles : nombre de fichiers que l’utilisateur virtuel est autorisé à enregistrer sur le serveur FTP. 0 signifie illimité.
8 FTP Anonyme
Si vous souhaitez créer un compte ftp anonyme (un compte ftp auquel tout le monde peut se connecter sans mot de passe), vous pouvez le faire comme ceci :
Tout d’abord, créez un utilisateur ftp (avec le répertoire personnel /home/ftp) et le groupe ftp :
groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "ftp anonyme" -g ftp ftpEnsuite, créez le fichier /etc/pure-ftpd/conf/NoAnonymous qui contient la chaîne no :
echo "no" > /etc/pure-ftpd/conf/NoAnonymousAvec cette configuration, PureFTPd permettra les connexions anonymes.
Redémarrez PureFTPd :
/etc/init.d/pure-ftpd-mysql restartEnsuite, nous créons le répertoire /home/ftp/incoming qui permettra aux utilisateurs anonymes de télécharger des fichiers. Nous donnerons au répertoire /home/ftp/incoming des permissions de 311 afin que les utilisateurs puissent télécharger, mais ne puissent pas voir ou télécharger des fichiers dans ce répertoire. Le répertoire /home/ftp aura des permissions de 555 qui permettent de voir et de télécharger des fichiers :
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/Maintenant, les utilisateurs anonymes peuvent se connecter, et ils peuvent télécharger des fichiers depuis /home/ftp, mais les téléchargements sont limités à /home/ftp/incoming (et une fois qu’un fichier est téléchargé dans /home/ftp/incoming, il ne peut pas être lu ni téléchargé depuis là ; l’administrateur du serveur doit le déplacer dans /home/ftp d’abord pour le rendre disponible aux autres).
9 Liens
- PureFTPd : http://www.pureftpd.org
- MySQL : http://www.mysql.com
- phpMyAdmin : http://www.phpmyadmin.net
- Debian : http://www.debian.org
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.