image à gauche Installation de pure-ftpd-mysql:

Pour cette installation nous considérerons que toutes la parties installations de php 8.3 et mysql-server et phpmyadmin sont bien effectuées.
Ce sera l'occasion de nous familiariser avec quelques commandes sql supplémentaires sur mysql-server, et phpmyadmin.
Pure-ftpd-mysql est un serveur FTP facilement configurable.
Il permet de travailler avec des utilisateurs virtuels stockés dans une base de données mysql
Ceci permet de ne pas créer d'utilisateurs Unix. De plus l'administration du serveur peut se faire avec PHP et Mysql. Il est par ailleurs sécurisable avec TLS. Nous n'aborderons pas pour le moment TLS,l'objet de ce tuto étant d'installer un serveur FTP simple. Tout ou presque se fera en utilisant un terminal et les quelques commandes mysql que nous découvrirons durant ce travail.
Quand j'installe sur ubuntu, j'ai coutume de passer en root car je trouve fastidieux d'avoir a invoquer sudo tout le temps
Pour ce faire dans le terminal tapez sudo -i et entrez le mot de passe de sudo...A partir de la vous etes root. Vous pourrez copier et coller les commandes répétées à droite, à gauche ou en dessous de l'illustration dans le terminal.les commandes à copier sont

en vert.

image à gauche

Pour bien travailler partagez votre écran (les quatre petits carrés) et fleches directionnelles gauche ou droite du clavier en cliquant sur firefox et sur le terminal,
Ainsi vous aurez toujours le tuto sous les yeux.

Alors allons y! Bon courage!


Nous allons d'abord procéder à une mise a jour des paquets...

image à droite

apt update -y && apt upgrade -y

-------->

Enter

Atendez la fin...

Nous installons pure-fpdf-mysql...

image à gauche


apt install pure-ftpd-mysql

------>

Enter

Nous relançons phpmyadmin...

image à droite On ouvre Firefox :

Entrez vos idenfiant et mot de passe et connectez vous...

http://localhost/phpmyadmin/

login

----->

password

----->

Connexion

Nous créons une table users...

cliquez sur la Base pureftpd à gauche...Pour la selectionner

cliquez sur SQL en haut...

Copier la commande CREATE su dessous...

Attention pour coller dans phpmyadmin

...

CTRL V

Assurez vous que l'interface est vide!!!

image à droite


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 '/home/ftp/',`QuotaTaille` 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`));


executer

En bas à droite...

Ici rien a faire que regarder...

Si vous avez des warning n'en tenez pas compte...Constatez a gauche que votre table a été crée... cliquez dessus pour voir sa structure.

image à droite

QUELQUES ETAPES POUR CONFIGURER NOTRE SERVEUR : pure-ftpd-mysql...

Allons voir les fichiers de configuration...

image à droite

cd /etc/pure-ftpd/conf

Enter

la commande : ls nous montre les fichiers de configuration...

image à droite

ls

Enter

Intéressons nous à NoAnonymous...

image à droite

nano NoAnonymous

Enter

Le fichier s'ouvre...Voir ci-dessous...

Il devrait contenir yes...

image à droite si oui alors simplement

Ctrl x

Pour sortir sans rien changer si non alors effacez et écrivez

yes

...puis

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier a enregistrer enfin:

Ctrl x

Pour sortir

Créons maintenant un fichier absent de la liste dans ce repertoire /conf...Le fichier CreateHomedir

Il sert a notre serveur pure-ftpd-mysql a créer le homedir d'un utilisateur à la premiere connexion s'il n'existe pas...

Le homedir dans lequel le user sera confiné ou shrooté selon les infos de la base de données.Pour nous /home/ftp/User...User = Nom du user

image à droite

nano CreateHomedir

Enter

Le nouveau fichier s'ouvre voir ci dessous...

image à droite Ici écrivez

yes

...puis

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier à enregistrer enfin:

Ctrl x

Pour sortir

Le fichier CreateHomedir existe et est configuré...

Intéressons nous à UnixAuthentication...

Pour ma part j'aime bien que les utilisateurs Unix puissent accéder au ftp (Ceux là ont accès à l'arborescence)...

nano UnixAuthentication

Enter

image à droite

Le fichier s'ouvre...Voir ci-dessous...

Il devrait contenir yes...

image à droite si oui alors simplement

Ctrl x

Pour sortir sans rien changer si non alors effacez et écrivez

yes

...puis

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier a enregistrer enfin:

Ctrl x

Pour sortir

image à droite

Déplaçons nous pour remonter d'un niveau de /etc/pure-ftpd/conf à /etc/pure-ftpd/...

image à droite

cd ..

-------->

Enter

Faites un ls pour voir le contenu:

ls

-------->

Enter

Allez à l'image ci dessous...

Créons maintenant un fichier absent de la liste dans ce repertoire /pure-ftpd/...Le fichier ChrootEveryone

Il sert à notre serveur pure-ftpd-mysql à confiner ou Chrooter nos utilisateurs...

image à droite

image à droite

nano ChrootEveryone

Enter

Le fichier s'ouvre...image ci-dessous

image à droite Ici écrivez

yes

...puis

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier à enregistrer enfin:

Ctrl x

Pour sortir

Le fichier ChrootEveryone existe et est configuré...

Nous créons un utilisateur dans la table users table users...

cliquez sur la table users à gauche...Pour la selectionner

cliquez sur SQL en haut...

Copier la commande INSERT INTO ci-dessous...

Attention pour coller dans phpmyadmin

...

CTRL V

Assurez vous que l'interface est vide!!!


image à droite

INSERT INTO `users` (`Id`, `User`, `Password`, `Uid`, `Gid`, `Dir`, `QuotaTaille`, `ULBandwidth`, `DLBandwidth`) VALUES (NULL, 'test', 'test-test', '33', '33', '/home/ftp/', '250', '10', '10');

executer

En bas à droite...

Rien a faire juste a regarder le résultat...

image à droite

Cliquez sur la table users et regardez...L'utilisateur est bien là...

Rien a faire juste a regarder le résultat...

image à droite

Cliquez maintenant sur l'icone accueil (petite maison en haut à gauche)...

image à droite

Puis sur comptes utilisateurs...

phpmyadmin nous affiche tous les comptes et leurs privilèges...

Cliquez sur le bouton Nouvel utilisateur...Ajouter un compte utilisateur

image à droite

Nous allons en créer un nouveau...Avec moins de droits que l'administrateur et uniquement sur la base pureftpd...

image à droite

Nom d'utilisateur:---> pureftpd

Nom d'hôte: local--->localhost :

Mot de passe ---> Un password fort

Saisir à nouveau---> le password fort

Cliquez sur Donner tous les privilèges sur la base de données pureftpd

Ici cochez Données Structure administration puis decochez GRANT

image à droite

Executer (En bas à gauche)...

Retournons sur comptes utilisateur...(On voit le nouvel utilisateur)...

image à droite

Terminons la configuration...

cd /etc/pure-ftpd/db

-------->

Enter

Vous êtes habitués!!!

image à droite

mv mysql.conf mysql.conf-backup

-------->

Enter

Pour faire une sauvegarde de mysql.conf Puis

ls

-------->

Enter

image à droite

ls

-------->

Enter

Nous voyons notre fichier backup!!!

image à droite

Nous allons créer un nouveau mysql.conf

nano mysql.conf

-------->

Enter

image à droite

Dans ce nouveau fichier vide copiez et collez le texte ci dessous

Remplacez password par le mot de passe de votre utilisateur pureftpd précédemment crée dans phpmyadmin



#Parametres de connexion a la base de donnees
#mettez ici le mot de passe de pureftpd a la place de password et effacez password et le commentaire!!!
MYSQLServer 127.0.0.1
MYSQLUser pureftpd
MYSQLPassword password
MYSQLDatabase pureftpd
#Parametres supplementaires
MYSQLPort 3306
MYSQLSocket /var/lib/mysql/mysql.sock
# Methode de cryptage du mot de passe
# Parametres possibles : '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 QuotaTaille FROM users WHERE User="\L"
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
# Optional : default UID - if set this overrides MYSQLGetUID
MYSQLDefaultUID 1000
# Optional : default GID - if set this overrides MYSQLGetGID
MYSQLDefaultGID 1000

Quand tout ceci est fait:

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier a enregistrer enfin:

Ctrl x

Pour sortir

image à droite

Ici juste un petit 'ls' pour vérifier la présence de mysql.conf

ls

-------->

Enter

image à droite

Un dernier fichier à vérifier MySQLConfigFile

cd /etc/pure-ftpd/conf/

-------->

Enter

ls

-------->

Enter

image à droite

nano MySQLConfigFile

-------->

Enter

Devrait contenir :

/etc/pure-ftpd/db/mysql.conf

Si c'est le cas

Ctrl x

Pour sortir

Si ce n'est pas le cas effacez et remplacez..

image à droite

Ctrl o

Pour écrire

Enter

pour accepter le nom du fichier à enregistrer enfin:

Ctrl x

Pour sortir

Redémarrons notre serveur

systemctl restart pure-ftpd-mysql.service

-------->

Enter

image à droite

Verifions le bon démarrage

systemctl status pure-ftpd-mysql.service

-------->

Enter

image à droite

image à droite

Ctrl c

-------->Pour retrouver le terminal

Le serveur est prêt. Nous allons l'utiliser

Sur notre terminal ou celui d'une machine distante...

root@nommachine/#

ftp l'ip du serveur

-------->

Enter

Continuez comme sur l'image...

A la fin quit pour sortir...

image à droite

Passons a présent sur filezilla

Utilisez la connexion rapide si vous êtes pressé

validez FTP non sécurisé, nous verrons plus tard la configuration de TLS

image à droite

Vous devriez optenir ceci!!!...

Sympa non?

image à droite

Nous apprendrons prochainement à utiliser des scripts php pour créer les utilisateurs depuis une interface d'administration que vous créez vous même.

Félicitations!

n