Un serveur PureFTPd-MySQL sous Linux
Un serveur FTP, on en a encore besoin assez couramment, que ce soit pour WordPress ou bien sitecopy. Nous allons donc voir les étapes nécessaires à l'installation d'un serveur PureFTPd, avec définition des comptes dans une base MySQL, pour ne pas avoir à les créer au niveau système.
L'installtion du moteur proprement dit est triviale:
apt-get install pure-ftpd-mysql
Puis on crée une base MySQL (appelons-la "pureftpd"), je vous laisse voir si vous préférez faire ça sous PHPMyAdmin ou en ligne de commande, chacun sa dope. Dans cette nouvelle base, créons la table "users" (là encore, utilisez votre méthode favorite):
CREATE TABLE `users` (
 `Id` int(11) NOT NULL auto_increment,
 `User` varchar(32) NOT NULL default '',
 `Password` varchar(64) NOT NULL default '',
 `Uid` int(3) NOT NULL default '33',
 `Gid` int(3) NOT NULL default '33',
 `Dir` varchar(255) NOT NULL default '',
 `QuotaSize` int(4) NOT NULL default '250',
 `ULBandwidth` int(2) NOT NULL default '10',
 `DLBandwidth` int(2) NOT NULL default '10',
 PRIMARY KEY  (`ID`),
 UNIQUE KEY `User` (`User`)
);
On note la valeur "33" par défaut pour Uid et Gid, correspondant à l'utilisateur "www-data" et utilisée pour les nouveaux fichiers.
Modifions maintenant quelques options de PureFTPd, en renseignant quelques fichiers dans /etc/pure-ftpd/conf.
Pour interdire les connexions anonymes:
echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
Pour enfermer chaque utilisateur dans son répertoire racine:
echo  "yes" > /etc/pure-ftpd/conf/ChrootEveryone
Pour autoriser les Uids à partir de 33 (la valeur par défaut est 1000):
echo "33" > /etc/pure-ftpd/conf/MinUID
On configure les paramètres MySQL de PureFTPd en définissant comme suit un fichier "/etc/pure-ftpd/db/pure-ftpd-mysql.conf":
#Parametres de connexion a la base de donnee
MYSQLServer 127.0.0.1
MYSQLUser <MySQL User>
MYSQLPassword <MySQL Password>
MYSQLDatabase pureftpd

#Parametres supplementaires
MYSQLPort 3306
MYSQLSocket /var/lib/mysql/mysql.sock

# Methode de cryptage du mot de passe
# Parametres possible : 'crypt', 'md5' ou 'cleartext' pour afficher le mot de passe en clair.
MYSQLCrypt cleartext

# Requetes SQL permettant a Pure-FTPd de trouver les donnees dans la base
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L"
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
Puis on le déclare via la commande suivante:
echo "/etc/pure-ftpd/db/pure-ftpd-mysql.conf" > /etc/pure-ftpd/conf/MySQLConfigFile
On valide enfin ces différentes configurations en redémarrant le service:
service pure-ftpd-mysql restart
Voilà, c'est terminé, s'il vous en faut plus vous trouverez certainement votre bonheur dans la doc de PureFTPd: https://www.pureftpd.org/project/pure-ftpd/doc