Installer en configurer PureFTPd avec gestion des utilisateurs par base de donnéesDescription Blog // affichée sur la liste tutos:
Voici un petit tutoriel pour installer et configurer pure-ftp avec gestion des utilisateurs par base de données. Cette méthode a l'avantage de pourvoir utiliser des limites en terme de bande passante et de quotas utilisés.
Voici un petit tutoriel pour installer et configurer pure-ftp avec gestion des utilisateurs par base de données. Cette méthode a l'avantage de pourvoir utiliser des limites en terme de bande passante et de quotas utilisés.
sourceInstaller MySQL et phpMyAdmin:
Code :
apt-get install mysql-server mysql-client phpmyadmin
Installer PureFTPd avec le support de MySQL
Code :
apt-get install pure-ftpd-mysql
Code :
Run pure-ftpd from inetd or as a standalone server? <-- standalone
Do you want pure-ftpwho to be installed setuid root? <-- No
On crée le group "ftpgroup" et le user "ftpuser"
Code :
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
Création de la base de données dans MySQL pour PureFTPd:
Connectez vous à l'interface phpMyAdmin et cliquez sur l'icône "SQL" en haut a gauche. Dans la fenêtre entrez les lignes suivantes pour créer la base de données et les utilisateurs que PureFTPd utilisera pour consulter la base de données. Remplacez "ftpdpass" par le mot de passe appartenant au user 'pureftpd'.
Code :
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;
Ensuite on crée la table des utilisateurs du FTP. Toujours dans la fenetre "SQL":
Code :
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;
Configurer PureFTPd:
Pour cela éditez le fichier de configuration mysql.conf
Code :
sudo nano /etc/pure-ftpd/db/mysql.conf
et modifiez le pour qu'il ressemble a ca:
Code :
MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
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")
Pensez à remplacer le "ftpdpass" par le mot de passe que vous avez donner lors de la création des utiulisateurs de la base de données dans l'étape précédente.
Créez un fichier ChrootEveryone afin d'empêcher les utilisateurs remonter dans les répertoires qui sont au dessus de leur home:
Code :
sudo nano /etc/pure-ftpd/conf/ChrootEveryone
et ecrivez simplement "yes" à l'interieur. Sauvez et quittez.
Enfin redémarrez PureFTPd:
Code :
sudo /etc/init.d/pure-ftpd-mysql restart
Maintenant il suffit de rajouter dans la table les utilisateurs qui pourront se connecter a votre FTP. Pour cela utilisez phpMyAdmin pour afficher le contenu de la table, qui est vide pour le moment.
Description des champs de la table:
User: le nom de l'utilisateur
status: 0 ou 1. 0 signifie que le compte est désactivé, l'utilisateur ne pourra donc pas se logger.
Password: mot de passe. prenez garde d'utiliser la fonction MD5 de MySQL pour encoder le mot de passe au format MD5.as an MD5 string:
UID: Le userid du FTP que vous avez créé plus haut (par exemple 2001). Cela peut etre le userid d'un autre utilisateur suivant les droits que vous voulez donner aux fichiers.
GID: Pareil que précédemment mais pour le group.
Dir: Le répertoire home ou arrivera l'utilisateur lorsqu'il se connecte (e.g. /mnt/ftp).
ULBandwidth: La limite de bande passante en envoi dont l'utilisateur dispose en Ko/sec. 0 signifie illimité.
DLBandwidth: La limite de bande passante en réception dont l'utilisateur dispose en Ko/sec. 0 signifie illimité.
comment: Un commentaire qui ne sera visible que par vous, pour vous aider a reconnaitre le compte par exemple.
ipaccess: Les IPs autorisées à se connecter a ce compte. * signifie n'importe qu'elle IP.
QuotaSize: L'espace en Mo que l'utilisateur peut occuper sur le FTP. 0 signifie illimité.
QuotaFiles: Le nombre de fichiers que l'utilisateur a le droit de mettre sur le FTP. 0 signifie illimité.