Objectifs du chapitre
- Connaître les démons NFS.
- Configurer un service NFS.
- Connaître les commandes de diagnostic NFS.
- Comprendre la gestion des droits des accès clients NFS.
- Connecter un client à un partage NFS.
- Configurer le partage Samba.
- Gérer les mots de passe Samba.
- Connecter un client à un partage Samba.
- Connaître les modes de fonctionnement FTP.
- Configurer un serveur et exploiter un client FTP.
1. NFS
NFS est le protocole historique de partage de fichiers sur les systèmes UNIX.
Il connaît un regain d’intérêt grâce aux applications qui l’exploitent pour accéder à des espaces de stockage peu onéreux, comme les infrastructures VMware et bon nombre de Cloud Managers open source.
1.1 Partage de répertoire
Un partage NFS actif est déclaré pour un répertoire local, et accessible à certains clients avec certaines options.
| Commande | Rôle |
|---|---|
exportfs | Diagnostic des partages actifs sur un système déjà configuré. Déclare aussi un partage ponctuel. |
exportfs -a | Relit /etc/exports. |
nfsstat | Statistiques de l’activité NFS, surtout pour vérifier une activité ou une absence d’activité sur un serveur. |
Partage ponctuel, déclaré de façon interactive :
# exportfs @client:/chemin_partage
| Paramètre | Signification |
|---|---|
@client | Adresse IP du client ou du réseau autorisé. Le joker * autorise tout le monde. |
chemin_partage | Chemin absolu du répertoire à partager. |
Partage permanent : il est déclaré dans /etc/exports, lu à chaque démarrage du service NFS ou à chaque appel de exportfs -a. Selon la distribution, ce fichier n’existe pas après l’installation et doit être créé.
partage1 *(rw,secure)
partage2 192.168.1.0/24(ro)
1.2 Les démons NFS
Le script de gestion du service NFS lance trois démons :
| Démon | Rôle |
|---|---|
portmap | Gère les requêtes RPC (Remote Procedure Call). Remplacé par rpcbind dans Red Hat 6/7/8. |
nfsd | Lance les threads NFS pour les connexions clientes. |
mountd | Gère les requêtes de montage des clients. |
1.3 Options de partage
Les options se placent dans la commande exportfs ou dans /etc/exports, séparées par des virgules.
| Option | Effet |
|---|---|
ro | Accès en lecture seule. |
rw | Accès en lecture et écriture. |
sync / async | Écriture synchrone ou asynchrone (avec ou sans cache en écriture). |
root_squash | Le compte root perd ses prérogatives sur le partage client. |
no_root_squash | Le compte root conserve ses prérogatives sur le partage. |
nolock | Ne pose pas de verrou sur les fichiers accédés. |
1.4 Configuration des clients
showmount affiche les informations d’un serveur NFS distant.
Le client accède au partage par un montage, puis l’exploite comme une arborescence locale :
# mount -t nfs @serveur:/chemin_partage point_de_montage
1.5 Gestion des identités
Aucune identification n’est demandée à la connexion : le client présente son uid et obtient sur le serveur exactement les droits de l’utilisateur qui a le même uid sur le serveur, sans autre contrôle.
Le compte root a l’uid 0 sur tout système Linux, donc un root client aurait en théorie les pleins pouvoirs sur le partage. L’option root_squash, appliquée implicitement, l’en empêche : le serveur remplace l’uid 0 par celui d’un compte de service NFS (nfsanonymous, nfsnobody, nobody… selon la distribution).
2. Samba
Samba est une solution d’interopérabilité avec Windows sur les systèmes Linux et Unix (partage de fichiers et d’imprimantes d’un serveur Linux vers des clients Windows).
Son nom vient du protocole SMB (Server Message Block), utilisé pour le partage de ressources sur les réseaux Microsoft.
2.1 Les démons Samba
| Démon | Ports | Rôle |
|---|---|---|
smbd | 139, 445 | Partage de fichiers et d’impression via SMB, verrouillage des ressources et authentification des utilisateurs. |
nmbd | 137 | Résolution nom d’hôte / IP via NetBIOS sur IPv4. |
2.2 Le fichier smb.conf
La configuration est dans smb.conf, généralement sous /etc/samba. Le fichier est divisé en sections dont le titre est entre crochets, avec des paramètres de la forme paramètre = valeur.
testparm valide le format du fichier et affiche la configuration épurée (sans commentaires) sur la sortie standard. Il ignore tout paramètre réglé à sa valeur par défaut.
2.3 Configuration globale
Les paramètres sur le fonctionnement et l’identité du serveur vont dans la section [global] :
| Paramètre | Rôle |
|---|---|
workgroup = groupe de travail | Nom du groupe de travail du serveur. |
server string = commentaire | Commentaire associé au serveur. |
log file = /chemin/log | Fichier de journalisation. |
max log size = log_max | Taille maximum des fichiers de journalisation. |
security = user | Oblige une authentification avec un compte utilisateur. |
encrypt passwords = true | Nécessaire pour des mots de passe cryptés. |
2.4 Partage de répertoire
Un partage est une section ajoutée dans smb.conf :
[nom_partage]
Comment = commentaire
Path = chemin_absolu
Readonly = yes / true / false / no
Writable = yes / true / false / no
Browseable = yes / no
Valid users = @arctic1
2.5 Gestion des identités
Samba utilise nativement les comptes du système. Problème : le client Windows présente un mot de passe haché en MD4, alors que Linux utilise un autre algorithme (MD5 en général).
Le serveur doit donc héberger une version MD4 du mot de passe. smbpasswd la crée pour un compte Linux existant et la stocke à part, généralement dans /etc/samba/smbpasswd.
| Commande | Action |
|---|---|
smbpasswd -a nom_compte | Crée le mot de passe Samba (MD4) du compte. |
smbpasswd -d nom_compte | Désactive le compte Samba. |
smbpasswd -e nom_compte | Réactive le compte Samba. |
smbpasswd -x nom_compte | Supprime le compte Samba. |
2.6 Le client Samba
Le client Samba accède à un partage d’une machine Windows ou depuis un client Linux, avec deux commandes principales : smbclient et mount.
# informations sur un serveur smb
$ smbclient -L adresse_serveur -N
# opérations sur un partage (cd pour naviguer, get pour récupérer, put pour envoyer)
$ smbclient //adresse_serveur/partage -U nom_utilisateur
SMB s’est normalisé et s’appelle désormais CIFS (la tendance est à la disparition de smb au profit de cifs). Montage d’un partage CIFS :
$ mount -t cifs //@serveur/partage /pt_montage -o username=nom_utilisateur
Côté serveur, smbstatus affiche les connexions SMB actives.
3. FTP
FTP (File Transfer Protocol) est un protocole client-serveur ancien, l’un des premiers à permettre le partage de fichiers entre deux ordinateurs.
Il reste très utilisé, notamment par les hébergeurs pour la mise à jour des sites web de leurs clients.
3.1 Mode actif et mode passif
| Mode | Canal de contrôle | Canal de données |
|---|---|---|
| Actif | Client vers port 21 du serveur. | Ouvert par le serveur, depuis son port 20, vers un port quelconque du client. |
| Passif | Client vers port 21 du serveur. | Ouvert par le client, après l’authentification, vers un port dynamique du serveur. |


3.2 Les clients FTP
Les clients graphiques existent pour toutes les plateformes, par exemple FileZilla (open source, très populaire sous Windows).
Le client en ligne de commande, inclus dans la plupart des systèmes, sert surtout à tester un serveur : chaque opération se fait une à une, ce qui montre où se situe l’échec en cas de dysfonctionnement.
| Commande | Action |
|---|---|
open | Ouvre une session FTP vers le serveur donné. |
close | Ferme la session en cours. |
ls | Liste les fichiers du répertoire courant distant. |
cd | Change le répertoire courant distant. |
get | Télécharge un fichier distant dans le répertoire local. |
put | Envoie un fichier local vers le répertoire courant distant. |
3.3 Le serveur Pure-FTPd
Pure-FTPd est un serveur FTP simple, stable et efficace, qui se lance facilement en ligne de commande sans fichier de configuration.
| Fonctionnement | Détail |
|---|---|
| Accès aux répertoires personnels | Par défaut : chaque utilisateur accède à ses données avec son identifiant et son mot de passe habituels. Déconseillé, car le mot de passe Linux transite en clair. |
| Accès anonyme | Possible si un compte ftp existe sur le serveur. Les clients anonymes travaillent dans /home/ftp. |
# lancement du service
# pure-ftpd
# accès anonyme uniquement
# pure-ftpd --anonymousonly
3.4 Le serveur vsftpd
vsftpd (very secure FTP daemon) est un serveur FTP très populaire sous Linux, qui s’appuie sur un service et le fichier de configuration /etc/vsftpd/vsftpd.conf. La plupart des paramètres valent YES ou NO.
| Paramètre | Rôle |
|---|---|
anonymous_enable | Autoriser ou interdire la connexion d’un compte anonyme. |
local_enable | Autoriser ou interdire la connexion avec des comptes utilisateurs locaux. |
write_enable | Autoriser ou interdire la création et la modification de fichiers et répertoires. |
chroot_local_user | Emprisonner les utilisateurs dans un répertoire spécifique. |
local_root | Spécifier un répertoire à partager. |