File Transfer Protocol avec Pure-FTPd — mise en place d'utilisateurs virtuels, configuration sécurisée et gestion des droits d'accès.
Ce guide utilise Pure-FTPd avec des utilisateurs virtuels — une approche plus sécurisée que les comptes système.
Sur Debian / Ubuntu, installez le paquet :
sudo apt update
sudo apt install pure-ftpd
Vérifier que le service est actif :
sudo systemctl status pure-ftpd
Le répertoire de configuration principal se trouve ici :
/etc/pure-ftpd/conf/
Créez les fichiers suivants avec les valeurs indiquées :
| Fichier (directive) | Valeur | Description |
|---|---|---|
| ChrootEveryone | yes | Confine chaque utilisateur dans son répertoire |
| CreateHomeDir | yes | Crée automatiquement le dossier home à la connexion |
| PAMAuthentication | no | Désactive l'authentification PAM (utilise PureDB) |
| UnixAuthentication | no | Désactive l'authentification par comptes système |
| NoAnonymous | yes | Interdit les connexions anonymes |
| MaxClientsNumber | 10 | Nombre maximum de clients simultanés |
| MaxClientsPerIP | 3 | Maximum de connexions par adresse IP |
Exemple — pour créer le fichier ChrootEveryone avec la valeur yes :
echo "yes" | sudo tee /etc/pure-ftpd/conf/ChrootEveryone
1 — Créer le groupe et l'utilisateur système dédiés :
# Créer le groupe virtuel (GID 6262, modifiable)
sudo groupadd --gid 6262 ftpGroup
# Créer l'utilisateur système de mapping (sans shell ni home réel)
sudo useradd -u 6262 -g ftpGroup -d /dev/null -s /bin/false ftpUser
2 — Préparer le répertoire racine FTP et le lien symbolique :
# Répertoire parent pour tous les dossiers d'utilisateurs virtuels
sudo mkdir /home/FTP
# Lien symbolique pour activer l'authentification PureDB via PAM
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/75pureDB
3 — Créer le premier utilisateur virtuel :
# "u1" = nom de l'utilisateur virtuel, à personnaliser
sudo pure-pw useradd "u1" -u ftpUser -d /home/FTP/u1 -m
-m met à jour automatiquement la base de données PureDB après création.
Le répertoire /home/FTP/u1 sera créé automatiquement à la première connexion
grâce à la directive CreateHomeDir yes.