installation de NFS
NFS est un service très utilisé, il permet pour un client d'utiliser un répertoire sur un serveur distant
de la même façon que s'il s'agissait d'une partition locale. Les trois fichiers de configuration
principaux sont /etc/exports, /etc/hosts.deny et /etc/hosts.allow.
___________________________________________________________________ |
Installation |
Système |
commande d'installation |
démarrage du service |
RedHat |
rpm -Uvh nfs-utils-*.rpm |
service nfs start |
Mandrake |
urpmi nfs-utils |
/etc/init.d/nfsd start |
Debian |
apt-get install nfs |
/etc/init.d/nfsd start |
OpenBSD |
par defaut |
|
___________________________________________________________________ |
Configuration |
Le fichier /etc/exports sert de liste de contrôle d'accès
pour les systèmes de fichiers à exporter aux clients NFS.
Il est utilisé à la fois par le démon de montage NFS
mountd(8) et par le démon serveur NFS nfsd(8).
Le format de ce fichier est similaire à celui de SunOS,
exports, avec plusieurs options supplémentaires. Chaque
ligne correspond à un point de montage, et à une liste de
machines, ou de noms de sous-réseaux autorisés à monter le
système de fichiers situé en ce point. Une liste
éventuelle de paramètres est mise entre parenthèses après
le nom de machine. Les lignes blanches sont ignorées, et
un # indique un commentaire s'étendant jusqu'à la fin de
la ligne.
________________________________________________________________ |
Options générales: |
|
secure |
Cette option réclame que les requêtes proviennent d'un port
Internet de numéro inférieur à IPPORT_RESERVED (1024). Elle
est en service par défaut. Pour la désactiver, introduire le mot-clé insecure. |
ro |
N'autorise que des requêtes en lecture-seule sur ce volume NFS.
Le comportement par défaut autorise également les requêtes en écriture, ce
que l'on peut également mentionner explicitement en utilisant l'option rw. |
link_relative |
Convertit les liens symboliques absolus (dont le contenu commence
par un slash) en lien relatifs en ajoutant le nombre nécessaire
de "../" pour aller de l'emplacement du lien à la racine du serveur.
Cette option a une sémantique assez subtile, parfois surprenante
lorsque la hiérarchie n'est pas montée à la racine. |
link_absolute |
Laisse les liens symboliques tels qu'ils sont.
C'est l'attitude par défaut. |
________________________________________________________________ |
Correspondance des UID |
|
nfsd effectue les contrôles d'accès aux fichiers du
serveur en se basant sur les UID et GID fournis avec
chaque requête RPC NFS. L'utilisateur s'attend à pouvoir
accéder à ses fichiers sur le serveur NFS exactement comme
il y accéderait sur un système de fichiers normal.
Ceci nécessite que les mêmes UID et GID soient utilisés
sur le serveur et sur la machine cliente. Ce n'est pas
toujours vrai, et même parfois indésirable.
Il est souvent très gênant que le Super-User d'une machine
cliente soit traité comme le Super-User lorsqu'il accède
aux fichiers du serveur. Pour éviter ceci, l'UID 0 (root)
est normalement transformé en un autre UID : par exemple
en UID anonyme nobody. Ce mode opératoire s'appelle `root
squashing' et est le comportement par défaut. On peut le
supprimer avec l'option no_root_squash.
De plus, nfsd vous permet d'indiquer des UIDs ou GIDs
arbitraires qui seront transformés en utilisateur
anonymes. Enfin, vous pouvez même transformer les requêtes
de tous les utilisateurs en UIG et GID anonymes avec
l'option all_squash .
Pour être utilisé dans des sites où les UIDs varient suivant
les machines, nfsd fournit une méthode de conversion
dynamique des UIDs du serveur en UIDs du client et
inversement. Ceci est mis en service avec l'option
map_daemon et utilise le protocole RPC UGID. Il faut que
le démon de conversion ugidd(8) soit actif sur le client.
Voici une liste complète des options de conversion :
root_squash |
Transforme les requêtes des UID/GID 0 en UID/GID anonymes.
Ceci ne s'applique pas aux autres UID/GID sensibles comme bin. |
no_root_squash |
Ne pas transformer les UID/GID 0. Cette option est
particulièrement utiles pour les stations sans disque. |
squash_uids |
Cette option précise une liste d'UIDs ou de GIDs qui sont |
et squash_gids |
convertis en utilisateurs anonymes. Une liste valide d'UIDs se
présente ainsi : squash_uids-15,20,25-50
Habituellement la liste à convertir est plus simple, comme dans :
squash_uids-100 |
all_squash |
Convertit tous les UID/GID en utilisateurs anonymes. Utiles pour
exporter avec NFS des répertoires publics de FTP, des répertoires
de News, etc... L'option inverse est no_all_squash, qui s'applique
par défaut. |
map_daemon |
Cette option active la conversion dynamique des UID/GID.
Chaque UID d'une requête NFS sera transformé en UID équivalent
sur le serveur, et l'UID des réponses NFS subira la transformation
inverse. Ceci nécessite que le démon rpc.ugidd(8) soit en
fonctionnement sur le client. La configuration par défaut est
map_identity, qui laisse les UIDs intacts. Les options de `squash'
s'appliquent que la conversion dynamique soit utilisée ou non. |
anonuid |
Ces options donne explicitement l'UID et le GID du compte |
et anongid |
anonyme. Ceci est surtout utiles pour les clients PC/NFS,
où l'on désire que toutes les requêtes semblent provenir
d'un utilisateur. C'est le cas de l'entrée /home/joe
dans l'exemple ci-dessous, qui transforme toutes les requêtes
en UID 150 (probablement celle de l'utilisateur joe). |
___________________________________________________________________ |
Fichiers exemple: |
________________________________________________________________ |
fichier /etc/exports |
|
/ maitre(rw) confiance(rw,no_root_squash) |
/projects proj*.local.domain(rw) |
/usr *.local.domain(ro) |
/home/joe pc001(rw,all_squash,anonuid,anongid=100) |
/pub (ro,insecure,all_squash) |
________________________________________________________________ |
fichier /etc/hosts.deny |
|
On va interdire toutes les machines qui ne sont pas
autorisée explicitement dans le /etc/hosts.allow. |
``ALL: ALL'' interdira l'accès a tous les services depuis toutes machines. |
________________________________________________________________ |
fichier /etc/hosts.allow |
|
portmap:192.168.1.34 |
lockd:192.168.1.34 |
mountd:192.168.1.34 |
rquotad:192.168.1.34 |
statd:192.168.1.34 |
La première ligne exporte l'ensemble du système de
fichiers vers les machines maître et confiance. En plus
des droits d'écriture, toutes conversions d'UID est abandonnée pour
l'hôte confiance. La deuxième et la troisième
lignes montrent des exemples de noms d'hôtes génériques.
La quatrième ligne montre une entrée pour le client PC/NFS
présenté plus haut.
La dernière ligne exporte un répertoire public de FTP, à
tous les hôtes 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é.
___________________________________________________________________ |
Sous OpenBSD |
La philosophie reste la même néanmoins on va observer quelques petits changements
dont voici un exemple:
/home -alldirs -mapall=root -network 192.168.0.1 -mask 255.255.255.0 |
avec ``-alldirs'' pour autoriser les clients à monter n'importe quel sous répertoire.
``-mapall=root'' pour que toutes les modifications soient considérées comme étant faites
par root. ``-network 192.168.0.1'' pour n'autoriser que ``192.168.0.1'' comme client.
``-mask 255.255.255.0'' pour spécifier le masque de réseaux.
___________________________________________________________________ |
Utilisation |
En tant que client on peut monter un volume nfs par la commande:
mount -t nfs 192.168.1.217:/home/nfs /nfs
On peut aussi l'inclure directement dans le fichier /etc/fstab:
server:/usr/local/pub /pub nfs rsize,wsize=8192,timeo=14,intr
___________________________________________________________________ |
Sécurisation |
Le problème de NFS est que la seule limitation que l'on peut appliquer au niveau du réseau
est basé sur l'adresse IP du client, qui peut être usurpée par la technique du spoofing.
Il est donc indispensable de renforcer cette sécurité par des règles afin d'en limiter
l'accès aux réseaux dont on peut avoir confiance.
|