# Le système d'exploitation GNU-Linux/Le partage de fichiers NFS

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]
Le protocole NFS (Network File System) permet de partager des fichiers dans les réseaux Unix.

## Installation du serveur NFS

Pour installer le serveur NFS sous Debian, il suffit de taper la commande suivante :

## Configuration du serveur NFS

La configuration du serveur NFS est stockée dans le fichier /etc/exports.
Ce fichier de configuration dispose d'une page de manuel :
Voici quelques exemples extrait du manpage :
* La première ligne exporte l’ensemble du système de fichiers vers les machines « master » et « trusty ». En plus des droits d’écriture, toute transformation d’UID est désactivée pour l’hôte « trusty ».
* Les deuxième et troisième lignes montrent des exemples de noms de machines avec caractères jokers, et de groupes de machines (« @trusted »).
* La quatrième ligne montre comment mapper tous les utilisateurs vers UID et GID particulier.
* La dernière ligne partage un répertoire /pub, à toutes les machines dans le monde, en effectuant les requêtes sous le compte anonyme. L’option insecure permet l’accès aux clients dont l’implémentation NFS n’utilise pas un port réservé.
À chaque modification du fichier /etc/exports, il faut relancer le serveur NFS pour que les modifications soient prises en compte :
On peut également utiliser la commande exportfs :

## Options d'exportation

Voici les options d'exportation les plus courantes :
* secure : cette option impose l’utilisation d’un port réservé (inférieur à 1024) comme origine de la requête.
* rw : exporte le répertoire en lecture / écriture
* ro : exporte le répertoire en lecture seule
* async : le serveur NFS va pouvoir répondre que le fichier a été écrit sur le support de stockage, même si cela n'a pas encore été fait. Améliore les performances du serveur.
* sync : le serveur NFS va écrire physiquement les fichiers sur le support de stockage avant de répondre. Réduit les performances du serveur.

### Options liées aux correspondances de UID et de GID (UID et GID mapping)

Le principal problème avec NFS est la correspondance des UID et des GID. Effectivement, l'utilisateur alex peut avoir le UID 1000 sur le client et un UID différent sur le serveur. NFS travaille avec les UID et GID numérique, il va donc par défaut enregistrer sur le serveur que le fichier appartient à l'utilisateur 1000, et non à l'utilisateur alex.
Pour pallier ces problèmes, NFS fournit des mécanismes pour transformer les UID et les GID.
Le problème se pose également avec le super-utilisateur root qui dispose du UID 0. Pour des raisons de sécurité, NFS va transformer par défaut les fichiers posés par le root vers le UID et le GID du compte anonyme (nobody.nogroup).
* root_squash : option par défaut. transforme les requètes provenant de l'UID 0 / GID 0 vers le UID et GID du compte anonyme.
* no_root_squash : ne transforme pas les requètes provenant de l'UID 0 / GID 0. À utiliser avec précaution.
* all_squash : transforme tous les UID/GID vers le UID/GID de l’utilisateur anonyme.
* anonuid : permet de spécifier le UID de l'utilisateur anonyme.
* anongid : permet de spécifier le GID de l'utilisateur anonyme.

## Utilisation de NFS depuis un poste client

La commande mount permet à un poste client d'accéder à un répertoire partagé par un serveur NFS.
Synopsis :
Exemple :
Si on veut que ce répertoire soit accessible à chaque boot, il suffit de rajouter la ligne suivante dans le fichier /etc/fstab :

## Authentification centralisée avec NIS

Pour résoudre le problème des UID / GID non identiques, la solution consiste à déployer NIS.
Pour installer NIS sous Debian, utiliser la commande suivante :
Lors de l'installation il faut indiquer le domaine NIS, ce dernier peut être différent du domaine internet.
Pour le déploiement du serveur et des clients NIS, on va suivre la procédure Debian décrite dans le fichier /usr/share/doc/nis/nis.debian.howto.gz :

### Configuration du serveur NIS

Il faut tout d'abord vérifier que le fichier /etc/hosts contient l'adresse IP et le nom FQDN du serveur :
Il faut ensuite vérifier que le fichier /etc/defaultdomain contienne le domaine NIS :
Dans le fichier /etc/ypserv.securenets, on restreint l'utilisation du domaine NIS au domaine du réseau local. On remplace la ligne 0.0.0.0 0.0.0.0 par : 255.255.255.0 192.168.30.0.
On modifie ensuite /etc/default/nis pour indiquer qu'il s'agit du serveur NIS :
On relance le serveur NIS :
Cette étape peut prendre un certain temps ...
On lance ensuite la création des bases de données NIS avec la commande suivante :
Ceci va créer les fichiers partagés dans le répertoire /var/yp/DOMAINENIS.

### Configuration du client NIS

On installe nis (c'est le même paquet qui fait office de client et de serveur) :
On vérifie que le fichier /etc/defaultdomain contienne le domaine NIS :
Dans le fichier /etc/yp.conf, on indique l'adresse IP du serveur NIS :
On démarre le client NIS :
On vérifie que le fichier /etc/nsswitch.conf contient bien les lignes suivantes :
L'option files indique au système d'aller voir les fichiers classiques /etc/passwd, /etc/group et /etc/shadow.
L'option nis indique au système d'aller ensuite interroger le serveur NIS.
À la fin du fichier /etc/passwd, on rajoute la ligne suivante :
À la fin du fichier /etc/shadow, on rajoute la ligne suivante :
À la fin du fichier /etc/group, on rajoute la ligne suivante :
Pour tester, on lance la commande suivante :
On doit voir afficher le fichier /etc/passwd partagé.
Sur le serveur NIS, on rajoute un utilisateur :
Si tout fonctionne, on doit pouvoir se logger sur le client NIS avec l'utilisateur jack.