\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. déc. 3 10:45:01 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={/etc/exports},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Fichier d'exports NFS},
CreationDate={D:20161203104501},
ModDate={D:20161203104501},
Keywords={NFS;FileSystems;network;storages}
}}
\begin{document}
 
\begin{center}
{\Huge /etc/exports, /etc/exports.d }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Fichier d'exports NFS}
 
\vspace{10mm}
 
\hspace{1mm}  Le fichier /etc/exports contient une table de systèmes de fichiers physiques locaux d'un serveur NFS accessibles aux clients NFS.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Formats des noms de machine }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} nom d'hôte]{un hôte peut être spécifié soit par son nom abrégé reconnu par le resolver, son fqdn, une adresse IPv4 ou IPv6}
\item[\hspace{1mm} Réseaux IP]{il est possible d'exporter des répertoires à tous les hôte dans un sous-réseau en spécifiant <address>/<netmask>, ou le masque peut être sous la forme /255.255.255.0 ou /24.}
\item[\hspace{1mm} wildcards]{Les noms des machines peuvent contenir des caractère '*' ou '?' ou une classe de caractère entre crochets}
\item[\hspace{1mm} netgroups]{Les netgroups NIS peuvent être donnés sous la forme @group. Seule la partie hôte du chaque membre du netgroup est vérifié.}
\item[\hspace{1mm} anonymous]{Spécifié par '*' et matche tous les clients.}
\end{description}
 
\hspace{1mm}  Si un client matche plus d'une définition, seul le premier match de la liste est considéré.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Sécurité RPCSEC\_GSS }
 
\
 
\hspace{1mm}  Les chaînes "gss/krb5", "gss/krb5i" ou "gss/krb5p" peunvent être utilisés pour restreindre l'accès aux clients utilisant la sécurité rpcsec\_gss. Cependant, cette syntaxe est dépréciée, utiliser l'option "sec=":
\vspace{5mm} \\
 
 
\hspace{1mm}  L'option sec=, suivi par une liste de mécanismes de sécurité, restreints l'export aux clients utilisant ces mécanismes: sys (défaut = pas de sécurité cryptographique), krb5 (authentification uniquement), krb5i (protection d'intégrité), et krb5p (chiffrement). La négociation suit l'ordre listé, le mécanisme préférentiel est listé en premier.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Options Générales }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} secure|insecure]{Cette option nécessite que les requêtes viennent d'un port inférieur à IPPORT\_RESERVED (1024). Activée par défaut.}
\item[\hspace{1mm} rw|ro]{Autoriser les requêtes de lecture/écriture ou de lecture seulement.}
\item[\hspace{1mm} \texttt{[}a\texttt{]}sync]{async permet au serveur NFS de violer le protocole NFS et de répondre aux requêtes avant tout changement sur disque. Cela améliore les performance, mais peut cause une perte de données en cas de crash.}
\item[\hspace{1mm} \texttt{[}no\_\texttt{]}wdelay]{avec async, Le serveur NFS retarde normalement une requête d'écriture sur disque s'il suspecte qu'une autre requête d'écriture liée est en cours ou va se produire bientôt. Cela permet à plusieurs requêtes d'écritures d'être committed en une opération ce qui améliore les performances. Si un serveur reçoit principalement des petites requêtes non liées, ce comportement peut cependant réduire les performance. no\_wdelay permet de désactiver ce comportement.}
\item[\hspace{1mm} \texttt{[}no\texttt{]}hide]{Normalement, si un serveur exporte 2 systèmes de fichiers donc 1 est monté dans l'autre, le client devra monter les 2 systèmes de fichier explicitement. Si monte seulement le parent, il verra un répertoire vide à l'emplacement du 2eme fs. Il est 'caché'. nohide permet de ne pas cacher ce système de fichier. Cependant, certains client NFS ne gèrent pas cette situation, par exemple, il est possible que 2 fichiers aient le même numéro d'inode.}
\item[\hspace{1mm} \texttt{[}no\texttt{]}crossmnt]{Similaire à nohide, mais rend possible l'accès à tous les systèmes de fichier monté dans le système de fichier marqué avec crossmnt. Donc un fs enfant "B" est monté dans un parent "A" a le même effet que nohide sur B. Avec nohide les fs enfant doivent être explicitement exportés, avec crossmnt ce n'est pas nécessaire. Si un enfant d'un fichier crossmnt n'est pas explicitement exporté, il l'est implicitement avec les mêmes options que le parent, à l'exception de fsid=.}
\item[\hspace{1mm} \texttt{[}no\_\texttt{]}subtree\_check]{no\_subtree\_check désactive la vérification de l'arborescence, qui a de légères implications de sécurité, mais peut améliorer les performances dans certaines circonstances. Pour effectuer cette vérification, le serveur doit inclure des informations sur l'emplacement du fichier dans le filehandle donné au client. Cela peut poser problème en accédant à des fichiers qui sont renommé pendant qu'un client les ouvre. La vérification du subtree est également utilisée pour s'assurer que les fichiers dans les répertoire que seul root peut accéder peuvent seulement être accedés si le fs est exporté avec no\_root\_squash., même si le fichier lui-même autorise un accès plus large. un fs home devrait être exporté avec no\_subtree\_check. Un fs principalement lecture seule ou n'a pas de renommage important de fichiers (ex: /usr, /var), et pour lesquels les sous-répertoires peuvent être exportés, devraient probablement être exporté avec subtree\_check.}
\item[\hspace{1mm} \texttt{[}in\texttt{]}secure\_locks|\texttt{[}no\_\texttt{]}auth\_nlm]{Indique que le serveur NFS n'exige pas d'authentification pour les requêtes le lock (qui utilisent le protocole NLM) Normalement le serveur NFS exige qu'une requête lock maintienne un accréditif pour un utilisateur qui a un accès en lecture sur le fichier.}
\item[\hspace{1mm} mountpoint=path|mp]{Permet d'exporter seulement un répertoire si a été monté avec succès. Si aucun chemin n'est donné le point d'export doit être un point de montage. Cela permet de s'assurer que le répertoire sous un point de montage ne sera jamais exporté par accident si, par exemple, le fs échoue le montage dû à une erreur disque.}
\item[\hspace{1mm} fsid=num|root|uuid]{NFS doit être capable d'identifier chaque système de fichier qu'il exporte. Normalement il utilise un UUID ou un numéro de périphérique. Il peut être nécessaire d'identifier explicitement un système de fichier dans certains cas. root ou 0 indiquent le système de fichier identifié comme le parent de tous les autres fs exportés.}
\item[\hspace{1mm} nordirplus]{Désactive la gestion des requêtes READDIRPLUS. NFSv3 uniquement}
\item[\hspace{1mm} refer=path@host\texttt{[}+host\texttt{]}\texttt{[}:path@host\texttt{[}+host\texttt{]}\texttt{]}]{Un client référençant le point d'export sera dirigé pour choisir depuis la liste d'emplacement alternative pour le système de fichier.}
\item[\hspace{1mm} replicas=path@host\texttt{[}+host\texttt{]}\texttt{[}:path@host\texttt{[}+host\texttt{]}\texttt{]}]{Si le client demande un emplacement alternatif pour le point d'export, il obtiendra cette liste d'alternatifs.}
\item[\hspace{1mm} pnfs]{Active l'extension pNFS, qui permet au client de bypasser le serveur et d'effectuer les opération d'E/S directement dans les périphériques.}
\end{description}
 
\vspace{1cm}{\huge Mappage d'ID utilisateur }
 
\
 
\hspace{1mm}  nfsd base sont contrôle d'accès aux fichier sur le serveur sur l'uid et le gid fournis dans chaque requête RPC NFS. Le comportement normal qu'un utilisateur attend et qu'il peut accéder à ses fichier sur le serveur comme dans un serveur de fichier normal. Cela nécessite que les même uids et gids soient utilisés dans le client et le serveur. Cela n'est pas toujours vrai, ni toujours désirable.
\vspace{5mm} \\
 
 
\hspace{1mm}  Très souvent, il n'est pas désirable que root sur une machine soit également traitée en root en accédant à des fichiers sur un serveur NFS. l'uid 0 est normalement mappé à un autre id: nobody. Cette méthode, le root squashing, est le mode par défaut.
\vspace{5mm} \\
 
 
\hspace{1mm}  Par défaut, exportfs choisis un uid et gid à 65534 pour l'accès squashed. Ces valeurs peuvent être changées par les options anonuid et anongid. Finalement on peut mapper toutes les requêtes utilisateur à l'uid anonyme avec l'option all\_squash.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \texttt{[}no\_\texttt{]}root\_squash]{Map les requête pour uid/gid 0 en uid/gid anonyme}
\item[\hspace{1mm} \texttt{[}no\_\texttt{]}all\_squash]{Map tous les uid/gid un uid/gid anonyme}
\item[\hspace{1mm} anonuid, anongid]{Définis explicitement l'uid/gid anonyme}
\end{description}
 
\vspace{1cm}{\huge Table d'exports Extra }
 
\
 
\hspace{1mm}  Une fois la lecture de /etc/exports, exportfs lit les fichiers dans /etc/exports.d. Seul les fichiers se terminant par .exports sont lus.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemple }
 
\
 
\hspace{1mm} Exporter tout le système de fichier aux machines master et trusty, avec accès rw et désactivation du squashing \\
\hspace{1mm} \textbf{/ master(rw) trusty(rw,no\_root\_squash)} \\
\hspace{1mm} /projects proj*.local.domain(rw) \\
\hspace{1mm} \textbf{Exporter /usr en lecture seule à tous les hôtes du domain .local.domain, et en lecture/écriture à tous les membres du netgroup trusted} \\
\hspace{1mm} /usr *.local.domain(ro) @trusted(rw) \\
\hspace{1mm} \textbf{Exporter /home/joe pour pc001, avec activation du squashing pour tous les utilisateurs, et redéfinition du compte anonyme} \\
\hspace{1mm} /home/joe pc001(rw,all\_squash,anonuid=150,anongid=100) \\
\hspace{1mm} \textbf{Exporter /pub en lecture seul à tous le monde} \\
\hspace{1mm} /pub *(ro,insecure,all\_squash) \\
\hspace{1mm} \textbf{Exporter /srv/www en activant l'option sync à la machine "server" et aux membres de @trusted et @external} \\
\hspace{1mm} /srv/www -sync,rw server @trusted @external(ro) \\
\hspace{1mm} \textbf{Exporter /foo en IPv4 et IPv6} \\
\hspace{1mm} /foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw) \\
\hspace{1mm} \textbf{Utiliser les plages entre [] pour spécifier plusieurs noms d'hôte.} \\
\hspace{1mm} /build buildhost[0-9].local.domain(rw) \\
\end{flushleft}
\end{document}
