\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]{ven. mai 20 12:29:29 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={autofs},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Format des maps d'automontage},
CreationDate={D:20160520122929},
ModDate={D:20160520122929},
Keywords={FileSystems}
}}
\begin{document}
 
\begin{center}
{\Huge autofs }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Format des maps d'automontage}
 
\vspace{10mm}
 
\hspace{1mm}  Les maps d'auto-montage sont FILE, NIS, NISPLUS ou LDAP référencés par la map maître auto.master. Ces maps décrivent comment les systèmes de fichiers sous le point de montage de la map sont montés. Cette documentation décris le format sun; si un autre format, autre que amd, est spécifié, cette documentation ne s'applique pas.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Format SUN }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} key \texttt{[}-options\texttt{]} location]{}
\item[\hspace{1mm} key]{Pour les montages indirectes c'est la partie du nom de chemin entre le point de montage et le chemin dans le systèmes de fichier quand il est monté. Généralement on peut penser que la clé est un sous-répertoire sour le point de montage. Pour les montages direct, c'est le chemin complet de chaque point de montage. Cette map est toujours associée avec le point de montage /- dans la map maître.}
\item[\hspace{1mm} options]{0 ou plusieurs options peuvent être données. Les options peuvent également être données dans le fichier auto.master auquel cas les valeurs sont cumulées. Les options sont une liste d'options séparée par une ','.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -fstype=]{utilisé pour spécifier un type de système de fichier si le système de fichier n'est pas le type NFS. Cette option est traitée par l'auto-monteur, et non par la commande mount.}
\item[\hspace{6mm} -strict]{Utilisé pour traiter les erreurs en montant les systèmes de fichier comme fatal, c'est important quand plusieurs systèmes de fichiers devraient être montés. Si l'option est données, aucun système de fichier n'est monté si au moins un système de fichier ne peut être monté.}
\item[\hspace{6mm} -use-weight-only]{Utilisé pour faire le poid du seul facteur dans le choix du serveur lorsque plusieurs serveurs sont présents dans une entrée de map.}
\item[\hspace{6mm} -no-use-weight-only]{Peut être utilisée pour inverser l'option si présent dans l'entrée de map maître.}
\end{description}
 
\hspace{1mm}  L'emplacement spécifie d'où le système de fichier est monté. Dans la plupart des cas ce sera un volume NFS et la notation courante est host:pathname. Si le système à monté commence avec un / (comme les entreés /dev ou les partages smbfs), un : doivent être préfixé (exemple: :/dev/sda1).
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Maps indirectes:
 
{\ttfamily
kernel -ro,soft,intr ftp.kernel.org:/pub/linux\\ boot -fstype=ext2 :/dev/hda1\\ windoze -fstype=smbfs ://windoze/c\\ removable -fstype=ext2 :/dev/hdd\\ cd -fstype=iso9660,ro :/dev/hdc\\ floppy -fstype=auto :/dev/fd0\\ server -rw,hard,intr / -ro myserver.me.org:/ /usr myserver.me.org:/usr /home myserver.me.org:/home\\
}
\vspace{8mm}
 
\hspace{1mm}  Sur la première ligne, on a un montage NFS du répertoire ftp.kernel.org. C'est monté en lecture seule. La seconde ligne monte un volume ext2 depuis un volume local. La 3ème ligne créé un partage exporté depuis une machine Window\$ disponible pour l'auto-montage. Le reste devrait être compréhensible. Le dernière entrée est un example d'un multi-map.
\vspace{5mm} \\
 
 
\hspace{1mm} Dans un automontage sur un système de fichier sans permissions d'accès (ex: vfat), les utilisateurs ne peuvent pas écrire sur ce système de fichier parce qu'il est monté en root. On peut résoudre cela en passant l'option gid=<gid>: \\
\hspace{1mm} \textbf{floppy-vfat -fstype=vfat,sync,gid=floppy,umask=002 :/dev/fd0} \\
 
\hspace{1mm} Maps directs:
 
{\ttfamily
/nfs/apps/mozilla bogus:/usr/local/moxill\\ /nfs/data/budgets tiger:/usr/local/budgets\\ /tst/sbin bogus:/usr/sbin\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Fonctionnalités }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} Substitution de clé]{Un caractère '\&' dans l'emplacement est étendu à la valeur du champ clé qui matche la ligne}
\item[\hspace{1mm} Clé wildcart]{'*' dénote une entrée wildcard. Cette entrée est consultée si la clé spécifiée n'existe pas dans la map. Une telle entrée ressemble à: * server:/export/home/\&}
\item[\hspace{1mm} Substitution de variable]{Les variables spéciales suivantes seront substituées dans le champs emplacement d'une entrée de map si préfixé avec un \$.:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} ARCH]{uname -m}
\item[\hspace{6mm} CPU]{Type de processeur}
\item[\hspace{6mm} HOST]{uname -n}
\item[\hspace{6mm} OSNAME]{uname -s}
\item[\hspace{6mm} OSREL]{uname -r}
\item[\hspace{6mm} OSVERS]{uname -v}
\item[\hspace{6mm} USER]{Login de l'utilisateur}
\item[\hspace{6mm} UID]{UID de l'utilisateur}
\item[\hspace{6mm} GROUP]{Nom du groupe}
\item[\hspace{6mm} GID]{GID du groupe}
\item[\hspace{6mm} HOME]{Répertoire home de l'utilisateur}
\item[\hspace{6mm} SHOST]{Hostname non fqdn}
\end{description}
 
\hspace{1mm}  Si un program map est utilisé avec ces variables d'environnement, elles seront préfixées avec "AUTOFS\_" pour empêcher certains programmes comme python de charger et d'exécuter du code arbitraire depuis un répertoire utilisateur.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} Maps exécutables]{Une map peut être marquée exécutable. Un program map est appelé avec la clé en argument. Il ne retourne rien en cas d'erreur, ou un code d'erreur, ou une ou plusieurs lignes d'une entrée de map.}
\item[\hspace{1mm} Montages multiple]{Une map multi-mount peut être utilisée pour nommer plusieurs systèmes de fichiers à monter, sous la forme: \textbf{key [ -options ] [[/] location [/relative-mount-point [ -options ] location...]...}.}
\item[\hspace{1mm} Serveurs répliqués]{Un emplacement de montage peut spécifier plusieurs hôtes, potentiellement avec un chemin d'export différent pour le même système de fichier. Historiquement, cet emplacements sont lecture seul et fournissent le même système de fichier répliqué:}
\end{description}
 
\hspace{1mm} Plusieurs hôtes, même chemin: \\
\hspace{1mm} \textbf{<path> host1,host2,hostn:/path/path} \\
\hspace{1mm} Plusieurs hôtes, certains avec le même chemin, d'autres noms: \\
\hspace{1mm} \textbf{<path> host1,host2:/blah host3:/some/other/path} \\
\hspace{1mm} Plusieurs hôtes répliqués, différents chemins: \\
\hspace{1mm} \textbf{<path> host1:/path/pathA host2:/path/pathB} \\
\hspace{1mm} Avec un poid, même chemin: \\
\hspace{1mm} \textbf{<path> host1(5),host2(6),host3(1):/path/path} \\
\hspace{1mm} Avec un poid, chemins différents: \\
\hspace{1mm} \textbf{<path> host1(3):/path/pathA host2(5):/path/pathB} \\
\hspace{1mm} Une variation qui fonctionne également: \\
\hspace{1mm} \textbf{<path> host1(3),host:/blah} \\
 
\vspace{1cm}{\huge Format AMD }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} key location-list]{}
\item[\hspace{1mm} key]{Chemin. peut être '*'.}
\item[\hspace{1mm} location-list]{emplacement des points de montages (syntaxe: location[ location[ ... ]] [|| location[ location[ ... ]]). || permet de spécifier d'autres emplacements à tester si l'emplacement n'est pas disponible.}
\end{description}
 
\hspace{1mm}  un emplacement de montage consiste d'une liste optionnellement séparée par ':', suivi par une liste séparée par ':' de paires option:=valeur. Le sélecteur qui peut être utilisé retourne une valeur ou un booléen. Ceux qui retournent une valeur peuvent être utilisé avec les opérateurs de comparaison == et != et ceux qui retoure un résultat booléen peuvent être inversés avec !.
\vspace{5mm} \\
 
 
\hspace{1mm}  Pour un emplacement soit sélectionné, tous ses sélecteurs doivent s'évaluer à true. De plus, certains sélecteurs ne prennent pas d'argument et d'autre, optionnelement 2 arguments. Les sélecteurs sans arguments sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} arch]{Architecture de la machine}
\item[\hspace{6mm} karch]{Architecture du kernel}
\item[\hspace{6mm} os]{Nom de l'os}
\item[\hspace{6mm} osver]{Version de l'os}
\item[\hspace{6mm} full\_os]{nom comple de l'os}
\item[\hspace{6mm} vendor]{Nom du vendeur de l'os}
\item[\hspace{6mm} byte]{Endianness du matériel}
\item[\hspace{6mm} cluster]{Nom du cluster local (a une valeur qui ne peut être définis que dans la configuration)}
\item[\hspace{6mm} autodir]{Chemin de base où sont effectués les montages externes si nécessaire.}
\item[\hspace{6mm} domain]{Nom de domaine local}
\item[\hspace{6mm} host]{Nom de l'hôte}
\item[\hspace{6mm} hostd]{Nom complet de l'hôte}
\item[\hspace{6mm} UID]{UID de l'utilisateur}
\item[\hspace{6mm} gid]{GID de l'utilisateur}
\item[\hspace{6mm} key]{Valeur de la clé à rechercher}
\item[\hspace{6mm} map]{Valeur du nom de la map pour rechercher key}
\item[\hspace{6mm} path]{Chemin complet du montage}
\item[\hspace{6mm} dollar]{le caractère '\$'}
\end{description}
 
\hspace{1mm}  Les sélecteurs qui prennent un argument sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} in\_network(network), network(network), netnumber(network), wire(network)]{Ces sélecteurs sont similaires. L'argument est une adresse ou un nom de réseau. La fonction compare cet argument avec chaque interface et retourne true si le réseau appartient au réseau.}
\item[\hspace{6mm} xhost(hostname)]{Compare hostname à \$\verb|{|host\verb|}| et s'il match, tente de rechercher le nom canonique de hostname et le compare à \verb|{|host\verb|}|.}
\item[\hspace{6mm} exists(filename)]{vrai si filename existe}
\item[\hspace{6mm} true()]{Évalue à vrai}
\item[\hspace{6mm} false()]{Évalue à faux}
\end{description}
 
\hspace{1mm}  Les sélecteurs qui prennent jusqu'à 2 arguments:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} netgrp(netgroup\texttt{[},hostname\texttt{]})]{Retourne vrai si hostname est un membre du netgroup spécifié. Si hostname n'est pas spécifié, \$\verb|{|host\verb|}| est utilisé}
\item[\hspace{6mm} netgrpd(netgroup\texttt{[},hostname\texttt{]})]{Identique, mais le hostname fqdn est utilisé au lieu de \$\verb|{|host\verb|}|}
\end{description}
 
\hspace{1mm}  Les options qui peuvent être utilisées sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} type]{Type de système de fichier à monter (auto, link, linkx, host, lofs, ext2-4, xfs, nfs, nfsl, cdfs).}
\item[\hspace{6mm} maptype]{Spécifie le type de source de map (file, nis, nisplus, exec, ldap, hesiod).}
\item[\hspace{6mm} fs]{Spécifie le système de fichier local. Dépendant du type.}
\item[\hspace{6mm} rhost]{L'hôte distant pour les requêtes réseau}
\item[\hspace{6mm} rfs]{Chemin du système de fichier de l'hôte distant}
\item[\hspace{6mm} dev]{Doit résoudre le système de fichier local}
\item[\hspace{6mm} sublink]{spécifie un sous-répertoire dans l'emplacement de montage pour laquelle cette entrée va pointer}
\item[\hspace{6mm} pref]{Spécifie un préfixe à ajouter à la clé de recherche avant de rechercher l'entrée de map}
\item[\hspace{6mm} opts]{Spécifie les options de montage à utiliser par mount. '-' pour ignorer.}
\item[\hspace{6mm} addopts]{Options de montage additionnels}
\item[\hspace{6mm} remopts]{Spécifie les options de montage au lieu de opts quand l'emplacement de montage est sur le réseau}
\end{description}
 
\vspace{1cm}{\huge Fonctionnalités }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} key Matching]{La clé à rechercher est construit en ajoutant le préfixe s'il y a un. Le chemin relatif résultant est matché en essayant d'abord la chaîne elle-même. S'il n'y a pas de match, le dernier composant le la clé est remplacée avec le caractère '*'. Le processus continue jusqu'à ce qu'un match soit trouvé.}
\item[\hspace{1mm} Macro Usage]{De nombreuses valeurs d'options sont définies comme variables correspondant au nom de l'option durant la recherche d'entrée de map. Elles peuvent être utilisé dans d'autres valeurs d'option (attention à l'ordre de ces options)}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Supposont une entrée de map maître: \\
\hspace{1mm} \textbf{/test file,amd:/etc/amd.test} \\
\hspace{1mm} Et la map suivante /etc/amd.test: \\
\hspace{1mm} \textbf{/defaults type:=nfs;rhost:=bilbo} \\
\hspace{1mm} \textbf{apps rfs:=/autofs} \\
\hspace{1mm} \textbf{util rhost:=zeus;rfs:=/work/util} \\
\hspace{1mm} \textbf{local rfs:=/shared;sublink:=local} \\
 
\hspace{1mm}  Dans la première ligne on a un montage distant NFS du répertoire exporté /autofs depuis l'hôte bilbo qui sera monté dans /test/apps. Un autre montage pour le répertoire exporté /work/util depuis l'hôte zeus. Il sera monté dans /test/utils.
\vspace{5mm} \\
\hspace{1mm}  Finallement on a un exemple de l'utilisation de l'option sublink, où filbo:/shared sera monté dans un chemin externe au répertoire d'automontage (sous le répertoire donné par l'option auto\_dir) et le chemin /test/local.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
