Par Mark Nielsen mark@tcu-inc.com
Si ce document change, il sera disponible ici: http://www.tcu-inc.com/mark/articles/Autofs2.html. Il existe également une version antérieure de ce tutoriel à l'adresse http://www.ssc.com/lg/issue24/nielsen.html qui a été publiée dans le numéro 24 de Janvier 1998.
Qu'est-ce qu'autofs ? Autofs vous facilite un peu l'utilisation de vos lecteurs de disquettes et de cdrom. Dans le monde MS Windoze, lorsque vous devez accéder à votre lecteur de disquettes, il vous suffit d'aller sur le lecteur a: et c'est tout. Pour permettre ce fonctionnement dans le monde Linux ou UNIX, vous devez utiliser un automonteur qui attache un périphérique (tel qu'un lecteur de disquettes ou de cdroms) à un répertoire de l'ordinateur.
Si vous n'avez pas d'automonteur, il vous faut attacher manuellement un périphérique à un répertoire en utilisant les commandes mount et umount. Par exemple, l'attachement de votre lecteur de disquettes au répertoire /mnt/floppy se fait ainsi:
mount /dev/fGd0 /mnt/floppy
Si vous devez explicitement indiquer quel type de formatage a subi la disquette, vous devez utiliser ces commandes:
mount -t msdos /dev/fd0 /mnt/floppy ## pour les disques au format msdos
mount -t ext2 /dev/fd0 /mnt/floppy ## pour les disques au format "linux"
Vous devez également vous assurer que le répertoire /mnt/floppy existe. La commande pour créer le répertoire serait:
mkdir -p /mnt/floppy
Cette commande effectue le démontage (la libération de l'utilisation du lecteur de disquettes).
umount /dev/fd0
Par ailleurs, ce que chacun devrait savoir, c'est que KDE et GNOME, qui sont des environnements de bureau pour X, ont généralement leur propre manière d'utiliser les lecteurs de disquettes. Le problème qui se pose alors est que si vous vous connectez à votre ordinateur par le biais de telnet ou ssh, ces fonctionnalités ne vous sont pas disponibles. Ce n'est pas agréable. En utilisant Autofs, tout programme ou utilisateur qui entrerait dans un répertoire qui est assigné à un périphérique (un lecteur de disquettes par exemple) provoque l'attachement du périphérique à ce répertoire. Cette opération est effectuée au niveau système plutôt qu'au niveau de l'interface graphique utilisateur.
De plus, Autofs peut être utilisé pour capturer un site nfs (ou d'autres choses du même style) et l'attacher à un répertoire. Il peut faire plus que le montage automatique de vos lecteurs de disquettes et de cdroms.
Si vous avez besoin de plus d'informations, essayez ces URL ou ces commandes sur votre ordinateur:
NOTE: vous devriez également prendre en compte les problèmes de sécurité qui peuvent se poser avec l'utilisation de autofs.
Comment installer Autofs ? Bien que je déteste expliquer les choses pour une version particulière de Linux (compte tenu du fait que je suis de plus en plus accro à la Debian), cette démo sera faite pour une RedHat 6.0.
Je considère que /dev/cdrom est votre lecteur de cdrom et que /dev/fd0 est votre lecteur de disquettes. Je considère également que vous avez fait une copie de sauvegarde de votre fichier /etc/auto.master. Utilisez ce script pour créer les fichiers suivants et redémarrez autofs.
Loguez vous en tant que root, allez dans votre répertoire utilisateur, copiez tout ce qui se trouve entre les deux lignes suivantes dans un fichier appelé CreateAutofs.script et exécutez ce script avec la commande:
source CreateAutofs.script
----------------------------------------------------------------------
mkdir -p /root/Drives
cd /root/Drives
### On s'assure que les deux répertoires existent en ignorant les erreurs
mkdir -p /mnt/Drives/floppy
mkdir /mnt/Drives/cdrom
### On sauvegarde les fichiers auto au cas où
mv -f /etc/auto.master /etc/auto.master_old
mv -f /etc/auto.floppy /etc/auto.floppy_old
mv -f /etc/auto.cdrom /etc/auto.cdrom_old
### On crée les fichiers pour autofs
echo "/mnt/Drives/cdrom /etc/auto.cdrom --timeout 10" > /etc/auto.master
echo "/mnt/Drives/floppy /etc/auto.floppy --timeout 3" >> /etc/auto.master
echo "floppy -fstype=auto :/dev/fd0" > /etc/auto.floppy
echo "cdrom -fstype=iso9660,ro :/dev/cdrom" > /etc/auto.cdrom
### On crée les liens vers le lecteur de disquettes et de cdrom
ln -s /mnt/Drives/floppy/floppy a:
ln -s /mnt/Drives/floppy/floppy floppy
ln -s /mnt/Drives/cdrom/cdrom d:
ln -s /mnt/Drives/cdrom/cdrom cdrom
### On redémarre autofs
/etc/rc.d/init.d/autofs stop
/etc/rc.d/init.d/autofs start
### Si cela n'a pas marché, il vous faudra peut-être rebooter
cd /root/Drives
----------------------------------------------------------------------
Insérez maintenant une disquette formatée au format MSDOS et un cdrom dans leurs lecteurs respectifs et exécutez les commandes suivantes:
ls /root/Drives/a:
ls /root/Drives/d:
pour voir s'ils contiennent quelque chose. Normalement, vous ne devriez pas
avoir de messages d'erreur.
Chez moi, le fichier /etc/auto.floppy ressemble à ça:
floppy -fstype=auto,defaults,user,suid :/dev/fd0
et mon fichier /etc/auto.cdrom à ça:
cdrom -fstype=iso9660,user,suid :/dev/cdrom
J'ai pris des options restrictives dans le script pour des raisons de sécurité. Mais compte tenu du fait que je suis la seule personne à utiliser mon ordinateur, je voulais être sûr que mon compte personnel ait un accès aux lecteurs de disquettes et de cédérom. Auparavant, -fstype=auto ne marchait pas très bien avec les disques msdos mais, depuis que j'ai augmenté le délai de garde à 3 secondes, cela semble fonctionner correctement. J'ai pris un délai de garde de 10 secondes pour le cdrom dans la mesure où cela ne marchait pas vraiment correctement avec 1 seconde et où je me suis dit que le lecteur n'avait probablement pas le temps de chauffer avant de s'éteindre. Peut-être voudrez-vous tester la valeur optimale du délai de garde pour votre lecteur de cdrom.
Le script /etc/rc.d/init.d/autofs regarde d'abord dans /etc/auto.master. Ce fichier comporte généralement trois choses par ligne :
Par ailleurs, les fichiers supplémentaires peuvent comporter plus d'une entrée mais, pour ma part, je ne tire pas parti de cette fonctionnalité. Veuillez lire ce qui suit pour en comprendre les raisons. Les fichiers auxiliaires peuvent prendre les noms que vous voulez. Ils contiennent aussi trois valeurs par entrée.
Le répertoire pseudo est contenu dans le répertoire défini dans /etc/auto.master. Lorsque l'on essaie d'accéder à ce pseudo répertoire, l'utilisateur est rerouté vers le périphérique que vous avez spécifié. Par exemple, le script ci-dessus génère un lien appelé a: qui, si vous le listez avec la commande ls a:, vous donnera la liste des fichiers présents sur le lecteur de disquettes. Une commande similaire serait ls /mnt/Drives/floppy/floppy. Mais si vous exécutez la commande ls /mnt/Drives/floppy, vous ne verrez rien même si le répertoire /mnt/Drives/floppy/floppy est sensé exister. La raison en est que /mnt/Drives/floppy/floppy n'existe pas en tant que fichier ou répertoire: le système se débrouille pour savoir que si vous demandez à accéder à /mnt/Drives/floppy/floppy, il doit vous renvoyer vers le lecteur de disquettes.
Parlons maintenant de la raison qui fait que je n'ai pas combiné les lecteurs de disquettes et de cdrom dans le même fichier auxiliaire. Chaque définition dans le fichier /etc/auto.master dispose de son propre programme automount. Si plusieurs périphériques utilisent le même programme automount et que l'un deux a une défaillance, il se pourrait qu'il entrave le bon fonctionnement des autres. C'est pourquoi je donne à chaque périphérique son propre programme automount ce qui implique qu'il n'y ait qu'un périphérique par fichier auxiliaire mentionné dans le fichier /etc/auto.master.
Il est également important de remarquer que j'utilise des liens pour les répertoires pseudo. Les experts de l'informatique risquent la confusion si ils essayent d'utiliser manuellement les répertoires pseudo. À la base, les répertoires pseudo sont des répertoires qui n'existent pas jusqu'au moment où vous essayez de les utiliser. J'aime bien utiliser des liens vers les répertoires pseudo de manière à ce que l'utilisateur voit et utilise ces liens. Les gens sont contents car les liens restent au contraire des répertoires pseudo qui vont et viennent à la demande.
Comment mettre cela en place pour les nouveaux utilisateurs?
D'abord, vous devez comprendre que les options de montage que vous mettez dans les fichiers de configuration de autofs déterminent comment un utilisateur pourra utiliser les lecteurs de disquettes ou de cdrom ainsi que tout autre type de périphérique. Par ailleurs, vous ne devez pas négliger les problèmes de sécurité qu'implique l'utilisation de autofs.
Faites ce qui suit:
mkdir -p /etc/skel/Drives
ln -s /mnt/Drives/floppy/floppy /etc/skel/Drives/floppy ## lien vers la disquette
ln -s /mnt/Drives/floppy/floppy /etc/skel/Drives/a:
ln -s /mnt/Drives/cdrom/cdrom /etc/skel/Drives/cdrom ## lien vers le cdrom
ln -s /mnt/Drives/cdrom/cdrom /etc/skel/Drives/d:
Comment l'installer pour un utilisateur que nous appellerons frank et dont le répertoire personnel est /home/frank
mkdir -p /home/frank/Drives ## créer un répertoire pour frank
chown frank /home/frank/Drives ## Lui en donner la propriété
ln -s /mnt/Drives/floppy/floppy /home/frank/Drives/a: ## lien vers la disquette
ln -s /mnt/Drives/floppy/floppy /home/frank/Drives/floppy
ln -s /mnt/Drives/cdrom/cdrom /home/frank/Drives/d: ## lien vers le cdrom
ln -s /mnt/Drives/cdrom/cdrom /home/frank/Drives/cdrom
chown frank /home/frank/Drives/* ### Donner à frank la propriété du contenu du répertoire
Une commande vraiment risquée pour installer chez un utilisateur après avoir installé chez des utilisateurs novices serait de faire:
### NE FAITES PAS CELA À MOINS D'AIMER LE RISQUE
mkdir -p /home/frank/Drives
if [ -d /etc/skel/Drives ]; then
tar -C /etc/skel -c Drives | tar -C /home/frank -xv Drives
chown -R frank /home/frank/Drives
else
echo "Pense d'abord à créer le répertoire /etc/skel/Drives, mon gars."
fi
Passons maintenant à des choses un peu plus amusantes. Je vais faire appel à un fichier de configuration de plus pour gérer à la fois un lecteur zip et un site nfs. Tout d'abord, je considère que le lecteur zip est en esclave sur le contrôleur IDE primaire de votre ordinateur. En fait, j'ai essayé de me connecter à ce site via nfs et ça n'a pas marché. J'ai essayé de le faire entre mes ordinateurs chez moi et tout a bien fonctionné.
echo "/mnt/Drives/zip /etc/auto.zip --timeout 10 --timeout 5" >> /etc/auto.master
echo "kernel -ro,soft,intr ftp.kernel.org:/pub/linux" > /etc/auto.zip
echo "zip1 -fstype=auto,rw :/dev/hdb1 " >> /etc/auto.zip
echo "zip2 -fstype=auto,rw :/dev/hdb2 " >> /etc/auto.zip
echo "zip3 -fstype=auto,rw :/dev/hdb3 " >> /etc/auto.zip
echo "zip4 -fstype=auto,rw :/dev/hdb4 " >> /etc/auto.zip
ln -s /mnt/Drives/zip/kernel /etc/skel/Drives/kernel
ln -s /mnt/Drives/zip/zip4 /etc/skel/Drives/zip ## lien vers le cdrom
Copyright © 1999, Mark Nielsen - Adaptation française de Pierre Tane