1.
Introduction
Le protocole FTP (File Transfer Protocol) est, comme son nom l'indique, un protocole de
transfert de fichier.
Le protocole FTP définit la façon selon laquelle des données doivent être transférées sur un
réseau TCP/IP.
Le protocole FTP a pour objectifs de :
Permettre un partage de fichiers entre machine distante
Permettre une indépendance aux systèmes de fichiers des machines clientes et serveur
Permettre de transférer des données de manière efficace
2. Le modèle ftp
Canal de contrôle
Le chemin de communication entre le USER-PI et le SERVER-PI pour l'échange de
commandes et de réponses à commandes. Cette connexion utilise le protocole Telnet.
Canal de données
Une connexion bidirectionnelle (full duplex) sur laquelle les données sont transférées. Les
données transférées peuvent être une partie d'un fichier, un fichier entier, ou plusieurs fichiers.
Cette connexion s'établit entre un SERVER-DTP et un USER-DTP
USER-PI
L'interpréteur de protocole utilisateur instaure le canal de contrôle via son port avec le serveur
FTP.
SERVER-PI
L'interpréteur de protocole serveur "écoute" sur le Port L une communication arrivant d'un
USER-PI et établit la connexion pour le canal de contrôle. Il reçoit par celui-ci les
commandes FTP, y répond, et pilote le SERVER-DTP.
USER-DTP
Le processus de transfert de données "écoute" le port de données en attendant la connexion à
un serveur FTP.
SERVER-DTP
Le processus qui transmet les données, dans son état "actif" normal, établit le canal de
données sur le port "en écoute". Il établit des paramètres pour le transfert et le stockage, et
transfère les données sur commande de son PI. Le DTP peut entrer dans un état "passif" pour
attendre, plutôt qu'initier une communication.
3. Les modes de connexion FTP
Le mode FTP actif
C'est le mode par défaut des clients FTP. Le client établi dans un premier temps une session
TCP sur le port 21 (FTP) du serveur ("control channel"). Une fois la session établie et
l'authentification FTP acceptée, c'est le serveur qui établit une session TCP (avec le port
source 20, FTP-DATA) vers un port dynamique du client ("data channel").
Le mode FTP passif
Il faut garder en mémoire que le mode passif est conseillé à partir du moment où les clients
peuvent se trouver derrière un Firewall/NAT. En effet dans ce mode, toutes les initialisions de
sessions TCP se font à partir du client.
Comme pour le FTP actif, le client établi une première session TCP sur le port 21 (FTP) du
serveur ("control channel"). Une fois la session établie et l'authentification FTP acceptée, on
demande au serveur de se mettre en attente de session TCP grâce à la commande PASV.
Alors le client peut établir une seconde session TCP sur un port dynamique vers le serveur
("data Channel").
1. Configuration serveur
Packages à installer: vsftpd (very secure ftp); ftp;
Fichier de configuration : /etc/vsftpd/[Link]
[root@localhost ~]#vi /etc/vsftpd/[Link]
# line 12: no anonymous
anonymous_enable=NO
# line 82,83: décommenter (autoriser le mode ascii)
ascii_upload_enable=YES
ascii_download_enable=YES
# line 100, 101: uncomment (activer chroot)
chroot_local_user=YES
chroot_list_enable=YES
# line 103: uncomment (specifier chroot list)
chroot_list_file=/etc/vsftpd/chroot_list
# line 114: change ( si IPv4 est utilisé)
listen=YES
# line 123: change
listen_ipv6=NO
# ajouter les lignes suivantes à la fin du fichier
# utiliser le temps local
use_localtime=YES
[root@localhost~]#vi /etc/vsftpd/chroot_list
#ajouter un utilisateur
User1
[root@localhost ~]#systemctl start vsftpd
[root@www ~]#systemctl enable vsftpd
Si le parfeu est activé:
[root@dlp ~]# firewall-cmd --add-service=ftp --permanent
success
[root@dlp ~]# firewall-cmd --reload
success
2. Configuration client
Client linux
Installer le client ftp: lftp; ftp
[redhat@dlp ~]$lftp -u user1 [Link]
Password: # password of the user
lftp user1@[Link]:~>
# afficher le répertoire courant sur le serveur ftp
lftp user1@[Link]:~>pwd
[Link]
# afficher le répertoire local de la machine
lftp user1@[Link]:~>!pwd
/home/redhat
# show files in current directory on FTP server
lftp user1@[Link]:~>ls
drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
-rw-r--r-- 1 1000 1000 399 Jul 20 16:32 [Link]
# show files in current directory on local server
lftp user1@[Link]:~>!ls -l
total 12
-rw-rw-r-- 1 redhat redhat 10 Jul 20 14:30 [Link]
-rw-rw-r-- 1 redhat redhat 10 Jul 20 14:59 [Link]
-rw-rw-r-- 1 redhat redhat 10 Jul 20 14:59 [Link]
# changer le répertoire
lftp user1@[Link]:~>cd public_html
lftp user1@[Link]:~/public_html>pwd
[Link]
# upload a file to FTP server
# "-a" signifie ascii mode ( par défaut le mode binaire )
lftp user1@[Link]:~>put -a [Link]
22 bytes transferred
Total 2 files transferred
lftp user1@[Link]:~>ls
drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
-rw-r--r-- 1 1000 1000 10 Jul 20 17:01 [Link]
-rw-r--r-- 1 1000 1000 399 Jul 20 16:32 [Link]
-rw-r--r-- 1 1000 1000 10 Jul 20 17:01 [Link]
# upload plusieurs fichiers vers le serveur FTP
lftp user1@[Link]:~>mput -a [Link] [Link]
22 bytes transferred
Total 2 files transferred
lftp user1@[Link]:~>ls
# télécharger un fichier à partir du serveur FTP
lftp user1@[Link]:~>get -a [Link]
# télécharger plusieurs fichiers à partir du serveur FTP
lftp user1@[Link]:~>mget -a [Link] [Link]
# créer un répertoire
lftp user1@[Link]:~> mkdir testdir
mkdir ok, `testdir' created
# supprimer un répertoire du serveur FTP
lftp user1@[Link]:~> rmdir testdir
rmdir ok, `testdir' removed
# supprimer un fichier au niveau du serveur
lftp user1@[Link]:~>rm [Link]
rm ok, `[Link]' removed
# supprimer plusieurs fichiers
lftp user1@[Link]:~> mrm [Link] [Link]
rm ok, 2 files removed
# exit
lftp user1@[Link]:~>
quit
221 Goodbye.
Client windows
On utilise le client ftp Filezilla