Installation et configuration de PureFTPd-MySQL sous Debian
Il reste encore des cas où l'on doit ouvrir des comptes FTP, que ce soit pour les besoins d'un WordPress ou bien de transferts automatiques entre serveurs, ce genre de choses. Voyons comment faire avec PureFTPd configuré pour exploiter une base de comptes sous MySQL.
On va considérer que MySQL et PHPMyAdmin sont déjà installés (si vous n'utilisez pas PHPMyAdmin et préférez la ligne de commande, vous saurez traduire sans difficulté, a priori).
Commençons par installer PureFTPd-MySQL:
apt-get install pure-ftpd-mysql
Dans PHPMyAdmin, créons un utilisateur "pureftpd" avec son mot de passe "XXXXXXX", et demandons à PHPMyAdmin de créer une base de même nom sur laquelle le dit autilisateur aura tous les droits. Classique.
Cette nouvelle base "pureftpd" sélectionnée, exécutons le code suivant sous l'onglet SQL:
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`)
);
Ce code est limpide, à la création d'un nouvel utilisateur on n'aura à renseigner que l'identifiant (User), le mot de passe (Password) et le répertire par défaut (Dir), le reste se remplira tout seul avec des valeurs automatiques ou bien par défaut.
Cette base "pureftpd" doit tout de même être déclarée à PureFTPd-MySQL, créons donc le fichier de configuration sous "/etc/pure-ftpd/db/pure-ftpd-mysql.conf", avec le contenu suivant:
MYSQLServer 127.0.0.1
MYSQLUser pureftpd
MYSQLPassword XXXXXXX
MYSQLDatabase pureftpd

MYSQLPort 3306
MYSQLSocket /var/lib/mysql/mysql.sock

# crypt/md5/cleartext
MYSQLCrypt cleartext

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 ajuste les droits de ce fichier de configuration:
chmod 640 /etc/pure-ftpd/db/pure-ftpd-mysql.conf
Enfin, on déclare ce fichier de confifuration dans les paramètres de PureFTPd-MySQL:
echo "/etc/pure-ftpd/db/pure-ftpd-mysql.conf" > /etc/pure-ftpd/conf/MySQLConfigFile
Ajustons l'UID minimum pour l'accès aux fichiers (normalement il s'agit de 33, sinon on peut le vérifier dans /etc/passwd, il s'agit de l'UID de www-data):
echo "33" > /etc/pure-ftpd/conf/MinUID
Pour terminer, interdisons les accès en anonymous:
echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
C'est presque fini, il ne reste plus qu'à valider nos changements de configuration:
service pure-ftpd-mysql restart
Cette fois, c'est vraiment fini, il ne reste plus qu'à tester notre connexion avec un client FTP.