1326 Words Cours

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.

CommandeRôle
exportfsDiagnostic des partages actifs sur un système déjà configuré. Déclare aussi un partage ponctuel.
exportfs -aRelit /etc/exports.
nfsstatStatistiques 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ètreSignification
@clientAdresse IP du client ou du réseau autorisé. Le joker * autorise tout le monde.
chemin_partageChemin 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émonRôle
portmapGère les requêtes RPC (Remote Procedure Call). Remplacé par rpcbind dans Red Hat 6/7/8.
nfsdLance les threads NFS pour les connexions clientes.
mountdGè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.

OptionEffet
roAccès en lecture seule.
rwAccès en lecture et écriture.
sync / asyncÉcriture synchrone ou asynchrone (avec ou sans cache en écriture).
root_squashLe compte root perd ses prérogatives sur le partage client.
no_root_squashLe compte root conserve ses prérogatives sur le partage.
nolockNe 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émonPortsRôle
smbd139, 445Partage de fichiers et d’impression via SMB, verrouillage des ressources et authentification des utilisateurs.
nmbd137Ré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ètreRôle
workgroup = groupe de travailNom du groupe de travail du serveur.
server string = commentaireCommentaire associé au serveur.
log file = /chemin/logFichier de journalisation.
max log size = log_maxTaille maximum des fichiers de journalisation.
security = userOblige une authentification avec un compte utilisateur.
encrypt passwords = trueNé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.

CommandeAction
smbpasswd -a nom_compteCrée le mot de passe Samba (MD4) du compte.
smbpasswd -d nom_compteDésactive le compte Samba.
smbpasswd -e nom_compteRéactive le compte Samba.
smbpasswd -x nom_compteSupprime 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

ModeCanal de contrôleCanal de données
ActifClient vers port 21 du serveur.Ouvert par le serveur, depuis son port 20, vers un port quelconque du client.
PassifClient vers port 21 du serveur.Ouvert par le client, après l’authentification, vers un port dynamique du serveur.

Mode actif : le canal de données part du port 20 du serveur vers le client

Mode passif : le client ouvre aussi le canal de données, 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.

CommandeAction
openOuvre une session FTP vers le serveur donné.
closeFerme la session en cours.
lsListe les fichiers du répertoire courant distant.
cdChange le répertoire courant distant.
getTélécharge un fichier distant dans le répertoire local.
putEnvoie 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.

FonctionnementDétail
Accès aux répertoires personnelsPar 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 anonymePossible 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ètreRôle
anonymous_enableAutoriser ou interdire la connexion d’un compte anonyme.
local_enableAutoriser ou interdire la connexion avec des comptes utilisateurs locaux.
write_enableAutoriser ou interdire la création et la modification de fichiers et répertoires.
chroot_local_userEmprisonner les utilisateurs dans un répertoire spécifique.
local_rootSpécifier un répertoire à partager.