Next Previous Contents

12. Le tutoriel autofs de Mark revisité

Par Mark Nielsen mark@tcu-inc.com

12.1 Le tutoriel autofs de Mark revisité

Au The Computer Underground

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.

12.2 Quelques remarques

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:

  1. man automount
  2. man autofs
  3. man /usr/man/man5/auto.master.5
  4. more /usr/doc/autofs-3.1.3/README
  5. Le howto Automount

NOTE: vous devriez également prendre en compte les problèmes de sécurité qui peuvent se poser avec l'utilisation de autofs.

12.3 Installer 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
----------------------------------------------------------------------

12.4 Ce que nous avons fait

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 :

  1. le répertoire dans lequel tous les montages vont s'effectuer
  2. le nom du fichier qui contient les configurations des périphériques que vous voulez monter. Nous appellerons ces fichiers les fichiers auxiliaires.
  3. le délai de garde que vous voulez avoir en secondes d'inactivité. À l'expiration de celui-ci, tous les périphériques spécifiés dans les fichiers auxiliaires seront libérés ou démontés.

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.

  1. le répertoire pseudo : j'expliquerai ce que cela signifie un peu plus loin
  2. les options de montage
  3. le périphérique (tel que /dev/fd0 qui représente le lecteur de disquettes) auquel le répertoire pseudo est connecté.

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.

12.5 Installer pour de nouveaux utilisateurs

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

12.6 Installer un lecteur zip ou d'autres ressources

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


Next Previous Contents