Magazine

Pure-FTPd et MySQL

Publié le 03 mai 2010 par Shadwk

Le logiciel Pure-FPure-FTPd LogoTPd est l’un des serveurs FTP les plus simple à installer et configurer c’est pourquoi si vous cherchez à installer un serveur FTP rapidement sur votre serveur Linux, je ne peux que vous le recommander.
Aujourd’hui, nous allons voir comment utiliser Pure-FTPd et MySQL simultanément pour permettre la séparation des tâches avec l’enregistrement des comptes utilisateurs dans le SGBDR et le reste du fonctionnement du serveur FTP gérer par Pure-FTPd. Le but du tutoriel n’étant pas de vous apprendre à installer et manipuler MySQL, je pars du principe que ce dernier est installé sur la même machine (ou une machine distante) que votre serveur FTP et que vous avez soit PHPMyAdmin sous la main ou le client MySQL en ligne de commande pour la partie traitant des manipulations sur la base de donnée.

Installation du serveur Pure-FTPd-mysql

Pour utiliser MySQL avec votre serveur de FTP, il faut que ce dernier ai été compilé avec la commande « –with-mysql« . Heureusement pour nous, plutôt que de ce compliquer la vie à compiler les sources du serveur, nous allons directement installer le paquet tout prêt à l’usage nommé : pure-ftpd-mysql.
Même si on vous conseil d’installer « pure-ftpd » ou même qu’on vous demande de le désinstaller si vous l’avez déjà installé, dite oui pour continuer l’installation.

sudo apt-get install pure-ftpd-mysql

Note : Si vous avez votre serveur FTP déjà en cours de production, l’installation de cette version ne perturbera en rien vos utilisateurs et vous pouvez continuer la suite de ce tutoriel puisque le redémarrage ne sera nécessaire qu’a la fin.

Création de la Base de donnée

A partir de votre interface PHPMyAdmin ou le client MySQL, vous allez créer un utilisateur ainsi qu’une base de donnée associé à ce compte.

Création d’un compte utilisateur en requête SQL.

CREATE USER `pureftpd` identified by `pwdftp`;

Création de la base de donnée et une table qui servira à contenir les comptes utilisateurs.

CREATE DATABASE `pureftpd`;

Association du compte utilisateur « pureftpd » avec la table « users » en lui attribuant les droits de lecture, écriture, mise à jour et suppression.

GRANT SELECT, INSERT, UPDATE, DELETE ON `*.pureftpd` TO `pureftpd`;

Création de la table où les utilisateurs seront enregistré.

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 '',
 `QuotaTaille` int(4) NOT NULL default '250',
 `ULBandePassante` int(2) NOT NULL default '10',
 `DLBandePassante` int(2) NOT NULL default '10',
 PRIMARY KEY  (`ID`),
 UNIQUE KEY `User` (`User`)
);

Avant de poursuivre, voici quelques informations sur la table et plus particulièrement sur ces champs.
Id : est un identifiant unique qui s’incrémente automatiquement à chaque insertion d’une ligne.
User : est l’identifiant qui sera utilisé lors d’une connexion.
Password : est le mot de passe affiché en clair. Aucune méthode de cryptage n’est appliqué !
Uid : C’est un entier qui permet d’identifier un compte utilisateur créer sur votre serveur Linux. J’ai mit le 33 en nombre par défaut car il s’agit de l’utilisateur « www-data » qui est automatiquement créer lorsque vous installez votre serveur Apache. Pour connaître le numéro des groupes, affichez le fichier /etc/passwd et cherchez une ligne ressemblant à « www-data:x:33:33:www-data:/var/www:/bin/sh« .
Gid : C’est le même principe que précédemment à savoir le groupe utilisateur qui sera associé aux fichiers lorsqu’une connexion FTP sera ouverte. Pour connaître les groupes utilisateurs vous pouvez soit chercher dans le fichier /etc/group ou alors vous les trouverez également comme dans le fichier précédent à savoir 33:33 où le premier nombre est le Uid et le second le Gid.
Dir : Il s’agit du chemin absolut vers lequel le client sera en mesure d’écrire. Veuillez à ce qu’il est les droits en écriture dans ce dossier au moins. De plus lorsque vous indiquez le chemin dans votre requête SQL Insert, veuillez à bien faire comme ceci : /chemin/dossier/puis/nom/dossier/ avec le / marquant bien la fin du chemin sinon des erreurs surviendront lors de la connexion au serveur.
QuotaTaille : permet de fixer une limite pour le compte de l’utilisateur qu’il ne pourra dépasser. Cette limite est exprimé en Mo et pour informations, 1Go = 1024 Mo.
ULBandePassante : Ce paramètre exprimé en Ko/s permet de définir la bande passante maximale en Upload (transfert du client au serveur) pouvant être atteinte par le client. Si vous mettez 0, cela sera considéré comme n’ayant aucune limite.
DLBandePassante : Ce paramètre exprimé en Ko/s permet de définir la bande passante maximale en Download (transfert du serveur au client) pouvant être atteinte par le client. Si vous mettez 0, cela sera considéré comme n’ayant aucune limite.

Les Fichiers de configuration de Pure-FTPd

Tous les fichiers concernant le serveur FTP se trouvent dans /etc/pure-ftpd/, les fichiers de configuration sont dans le dossier « conf » et le fichier concernant la base de donnée est dans « db« .

Interdire les connexions anonyme
Pour interdire les connexions en anonyme, éditez le fichier /etc/pure-ftpd/conf/NoAnonymous et écrivez ou remplacez le « yes » présent par simplement par « no« .

Indiquer le chemin du fichier de configuration
Dans le dossier « conf« , éditez le fichier MySQLConfigFile pour mettre le chemin du fichier de configuration que nous allons créer : /etc/pure-ftpd/db/pure-ftpd-mysql.conf

Créer le fichier de configuration MySQL
Maintenant nous allons créer le fichier de configuration /etc/pure-ftpd/db/pure-ftpd-mysql.conf qui sera utilisé pour indiquer les informations de connexion entre le serveur FTP et MySQL.

#Parametres de connexion a la base de donnee
MYSQLServer 127.0.0.1
MYSQLUser pureftpd
MYSQLPassword pwdftp
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"

Pour plus d’informations sur les différentes lignes et celle que je n’ai pas mise car je les considérais inutiles pour le cas présent, rendez-vous dans la doc de Pure-FTPd !

Démarrer votre serveur FTP

Pour démarrer votre serveur FTP, il vous suffira d’entrer les lignes suivante pour démarrer votre serveur en tâche de fond.

/usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/pure-ftpd-mysql.conf &

Vous pouvez modifier le fichier /etc/init.d/pure-ftpd-mysql si vous souhaitez exécuter à chaque démarrage votre serveur avec MySQL.

En savoir plus

Comprendre la gestion des utilisateurs sous Linux : http://hawkcreation.com/2009/03/16/le-droit-selon-linux/
Utilisation du client FTP FileZilla : http://hawkcreation.com/2009/03/16/filezilla/
Documentation Ubuntu pour installer un serveur Pure-FTPd : http://doc.ubuntu-fr.org/pure-ftp

`

Share on Facebook

Retour à La Une de Logo Paperblog

A propos de l’auteur


Shadwk 9 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog