Le Guide du ROOTard pour Linux: Administration sous Linux
Description: Ce document regroupe l'adaptation d'articles parus dans la Linux-Gazette. Merci à Nat Makarévitch pour ses relectures et Joël Bernier pour la mise en page HTML.
Keywords: Linux, francais, français, france, GNU, FSF, Debian, Redhat, Slackware, Mandrake, kheops, document, documentation, logiciel, libre, informatique, free, software, open, source, sourceware, freeware, soleil, support, assistance, hot line

> Page suivante Page précédente Table des matières ## 7. Administration sous Linux ## 7.1 Clavier Français Bien, commençons par la chose utile : le clavier français. Normalement, les distributions configurent ça tout seul... mais on ne sait jamais ! Une fois loggé en root, tapez la commande suivante :
>     /usr/bin/loadkeys /usr/lib/kbd/keytables/fr-latin1.map
> Si vous avez un clavier suisse-romand, utilisez `sf-latin1.map`. Maintenant, le clavier est français ! Attention, cela reste temporaire. La solution la plus simple est de le rajouter dans le fichier `/etc/rc.local` avec la Slackware mais vous pouvez aussi utiliser le programme `/sbin/setup` ou directement `/usr/lib/setup/SeTkeymap`. Pour la Red Hat, réaliser l'opération avec le panneau de configuration `kbdconfig`. Avec ces deux distributions, la procédure d'installation aura normalement procédé à cette configuration et vous n'aurez probablement rien à faire, sauf si vous voulez changer de type de clavier... ## 7.2 LILO LILO (LInux LOader) permet d'avoir un système multiple d'amorçage : MS-Windows, MS-Dos, Linux, etc. Ce programme va se loger dans le secteur de boot de votre disque pour vous permettre de sélectionner la partition sur laquelle booter. Si vous avez installé LILO sur le disque dur et que cela plante, bootez avec une disquette MS-DOS et tapez `FDISK /MBR` pour restaurer les paramètres de boot du DOS, et enlever LILO par la même occasion. Il suffira de relancer LILO en ayant rebooté sous Linux avec une disquette de boot. Le fichier de configuration LILO se trouve généralement dans le fichier `/etc/lilo.conf`. Les distributions permettent la génération d'un fichier d'une manière automatique. Voici un exemple de fichier (le mien) :
>     boot = /dev/hda    # disque sur lequel on met le fichier lilo :

>     delay = 300         # temps d'attente avant le lancement du boot.
>                         # permet d'avoir le temps de selectionner la partition
>                         # a amorcer.

>     vga = normal        # mode de l'écran a choisir
>     ramdisk = 0         # paranoia setting

>     # Linux : dernière version : le Pc boote ici par défaut
>     image = /vmlinuz    # Noyau Linux 1 (chemin complet et nom du fichier)
>       root = /dev/hda2
>       append="no-hlt, aha1542=0x230"
>       label = linux
>       read-only

>     other = /dev/hda1   # Partition 1 :
>       label = dos       # texte à taper pour booter dessus : dos
>       table = /dev/hda  # disque : /dev/hda

>     image = /zimage    # Noyau Linux 2
>       root = /dev/hda2  # Racine (Partition 2 de mon disque)
>       append="aha1542=0x230" # append... voir explication plus bas
>       label = old       # Texte a taper : old
>       read-only         #
> Plusieurs questions peuvent vous effleurer l'esprit : `read-only` : lorsque vous amorcez Linux, il va faire une vérification de la cohérence des informations des partitions Linux. C'est une vérification des systèmes de fichiers. Pour réaliser cette opération, il est indispensable que la partition soit en lecture seule. En effet, vérifier un disque en cours d'utilisation pourrait tout détruire. Cette vérification n'a pas lieu à tous les coups si vous éteignez bien la machine (appuyez sur les touches Ctrl-Alt-Del ou utilisez les commandes `halt`, `reboot` et `shudown`). Cette vérification n'est de toute manière lancée que sur les partitions Linux. C'est le programme `fsck` qui effectue cette opération. Je vous déconseille de le lancer "pour voir" : une utilisation erronée peut provoquer des pertes de données sur le disque ! pourquoi deux noyaux ? C'est assez simple : Linux change, bouge. Les noyaux sont modifiés assez souvent. Par exemple, je peux amorcer actuellement ma machine soit avec un noyau stable (2.0.30), soit avec un noyau de développement (2.1.42). `append` : Cette option est très importante : elle permet de donner un ou plusieurs paramètres au noyau Linux. Par exemple, ici je lui indique que ma carte SCSI se trouve à l'adresse 230. Dans le cas contraire, elle ne serait pas reconnue. Cette option est utilisée également si vous avez plusieurs interfaces réseau, SCSI, etc. Pour installer le fichier, exécutez `/sbin/lilo` et c'est tout ! En cas de problème avec LILO il faut d'abord essayer de supprimer l'option `"compact"` qui peut se trouver dans son fichier de configuration. Ne surtout pas oublier de relancer LILO après chaque modification de son fichier de configuration ! ## 7.3 Montage automatique de partitions : /etc/fstab Le fichier `/etc/fstab` contient toutes les informations concernant le montage de vos partitions. Voici un exemple :
>     #/etc/fstab
>     # Device      Repertoire     type        options      frequence  passe
>     # Linux
>     /dev/hda2         /           ext2        defaults        5        1
>     /dev/hdb2         /usr2       ext2        defaults        5        2
>     /dev/sda2         /usr3       ext2        defaults        10       2
>     # MS-DOS
>     /dev/hda1         /dos        msdos       defaults        0        0
>     /dev/hdb1         /dos2       msdos       defaults        0        0
>     # Processus
>     none              /proc       proc        defaults        0        0
>     # Partition de swap
>     /dev/hda3         none        swap        defaults        0        0
>     # Fichier de swap
>     /usr2/swap_file   /usr2       swap        defaults        0        0
> Voici une description des six colonnes : device (périphérique) de la partition. Dans le cas d'un fichier de swap, c'est le nom du fichier. point de montage de la partition ; type de la partition ; options (vous pouvez spécifier une partition en lecture seule, etc). fréquence correspond au nombre de jours entre deux traitements du fichier par la commande `dump`. Cette commande n'existe que pour ext2fs (c'est un portage de la version 4.4BSD) mais n'est pas encore incluse dans toutes les distributions. Ordre de tests des partitions (fsck). Si vous mettez 0, aucune vérification automatique n'est effectuée lors du démarrage. Les partitions situées sur un même disque seront testées d'une manière séquentielle mais si elles sont situées sur deux disques différents, c'est fait en parallèle. Ajouter ici les partitions dont vous avez besoin. Les volumes NFS profiteront des paramètres suivants : `rsize=8192,wsize=8192`, surtout si vous possèdez une carte réseau rapide. Pour autoriser un utilisateur à monter un volume il faut créer une ligne contenant l'option `user`. Exemple (cas d'un CD-ROM SCSI) :
>     /dev/scd0       /mnt/cd iso9660 user,exec,dev,nosuid,ro,noauto
> N'importe quel utilisateur pourra dès lors monter et démonter un CD (en utilisant `mount /mnt/cd`, `umount /mnt/cd`) La page de man de `mount`, section 8 (`man 8 mount`) explique la signification des options possibles. ## 7.4 Montage manuel de partitions Comme nous l'avons vu dans le paragraphe précédent, les partitions sont montées lors de l'amorçage grâce au fichier `/etc/fstab`. Vous pouvez toutefois les monter à la main. Il faut alors utiliser la commande `mount`. Par exemple, pour monter la disquette A:, faire : `mount -t msdos /dev/fd0 /mnt`. Le `-t` indique le type du support. Parmi les plus courants, on trouve `ext2` : filesystem Linux ; `msdos` : disque(tte)s MS-DOS ; `vfat` : disque(tte)s MS-Windows 95 ; `iso9660` : Cd-ROM ; `nfs` : montage de partitions à travers le réseau. Bien évidement, il faut que ces types de systèmes de fichiers aient été intégrés au noyau... Le `/dev/fd0` est le nom du fichier spécial correspondant au périphérique. Le répertoire est le point de montage. Pour démonter, tapez `umount /mnt`. ## 7.5 Mise en place des quota ### Logiciels nécessaires Le support des quota disque a été intégré dans le noyau Linux depuis la version 1.3.46. Il vous faut donc utiliser un noyau postérieur pour pouvoir bénéficier des quota. Vous avez également besoin des outils de gestion des quota. On peut les trouver sur : ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota ou, plus près, sur : ftp://ftp.lip6.fr/pub/linux/kernel/sources/subsystems/quota L'archive à récupérer s'appelle `quota-1.51.tar.gz` et se trouve dans le sous-répertoire `utils`. Il y a également un sous-répertoire `doc` contenant des documentations (principalement les pages de manuel des outils) au format HTML. Les utilisateurs de la Red Hat pourront préférer un paquetage rpm des sources ou précompilé. ### Compilation des utilitaires Après avoir extrait le contenu de l'archive `quota-1.51.tar.gz`, il vous faut compiler ces utilitaires. Cela se fait en tapant tout simplement `make`. Dans certains cas (selon la version de bibliothèque C utilisée), il peut être nécessaire d'ajouter `-I.` à la variable `CFLAGS` définie dans le `Makefile`. Si vous utilisez le système de fichiers ext2 et que vous avez installé les bibliothèques contenues dans la distribution `e2fsprogs` (utilitaires de gestion du système de fichiers ext2), vous pouvez inclure le support ext2fs dans les utilitaires des quota, afin d'accélérer leur exécution. Pour cela, éditez le fichier `Makefile` afin que la variable `CFLAGS` contienne `-DEXT2_DIRECT` et que la variable `EXT2LIBS` contienne `-lext2fs -lcom_err` avant de compiler les programmes. Après la compilation, installez les utilitaires par la commande `make install`. Attention, la commande `quota` est installée dans le répertoire `/usr/ucb` qui n'existe pas sur la plupart des installations Linux. Il vous faut donc modifier le `Makefile` pour installer cette commande dans un autre répertoire (`/usr/bin` est un bon choix). Il peut également être nécessaire de définir la variable `LN` à la valeur `ln -sf`. ### Activation de la gestion des quota dans le noyau Pour utiliser les quota, le noyau doit avoir été compilé avec le support des quota. pour cela, vous devez avoir un noyau dans lequel vous ayez répondu "Y" à la question "Quota support". Attention : le support des quota n'est pour l'instant effectif que sur les systèmes de fichiers ext2. ### Activation des quota sur les systèmes de fichiers Il existe deux types de quota : les quota liés aux utilisateurs et les quota liés aux groupes d'utilisateur. Les premiers définissent le nombre maximal de fichiers et de blocs disque associés à chaque utilisateur, les seconds définissent le nombre maximal de fichiers et de blocs disque associés à chaque groupe d'utilisateurs. Les deux types de quota peuvent être activés séparément. Pour activer les quota pour les utilisateurs, il faut indiquer l'option `usrquota` pour les systèmes de fichiers concernés dans `/etc/fstab`. Les quota concernant les groupes sont régis par l'option `grpquota`. Les fichiers de définition des quota s'appellent respectivement `quota.user` et `quota.group` et sont situés dans la racine de chaque système de fichiers concerné. Il est possible de modifier les noms de fichiers de gestion des quota en utilisant les syntaxes suivantes :
>     usrquota=nom_de_fichier
>     grpquota=nom_de_fichier
> Voici un exemple de fichier `/etc/fstab` :
>     /dev/hda2    /         ext2   defaults,rw 0 1
>     /dev/hdb2    /home     ext2   defaults,rw,usrquota,grpquota 0 1
>     /dev/sda1    /usr/src  ext2   defaults,rw,usrquota 0 1
> L'activation des quota est ensuite lancée par la commande `quotaon`. Pour les activer automatiquement lors du démarrage du système, il faut ajouter dans un fichier d'initialisation (situé généralement dans `/etc/rc.d`) les lignes :
>     # Enable quota
>     /usr/sbin/quotaon -avug
> Il peut également être nécessaire de vérifier la cohérence des informations de gestion des quota après des arrêts intempestifs. Pour cela, il faut utiliser la commande `quotacheck` :
>     /usr/sbin/quotacheck -avug
> Cette commande doit également être exécutée la première fois pour créer les fichiers deux fichiers de gestion des quotas : `quota.user` et `quota.group`. En effet, ils ne sont pas créés automatiquement. Si les utilitaires ont été compilés avec `-DEXT2_DIRECT`, la commande `quotacheck` doit être relativement rapide. Dans le cas contraire, elle peut être très lente car elle doit explorer tous les répertoires du système de fichiers de manière hiérarchique. Il est, de toutes façons, conseillé de la lancer automatiquement lors du démarrage avant l'activation des quota par `quotaon` :
>     # Check quota
>     /usr/sbin/quotacheck -avug
> ### Attribution d'un quota à un utilisateur La commande `edquota` est utilisée pour affecter un quota à un utilisateur ou à un groupe d'utilisateurs. Sa syntaxe est `edquota -u utilisateur` ou `edquota -g groupe`. Cette commande lance un éditeur de texte contenant la définition des quota attribués à l'utilisateur ou au groupe et prend en compte leur nouvelle valeur lorsque le fichier est ré-écrit. Pour chaque utilisateur ou groupe, il existe deux limitations : le nombre de fichiers et le nombre de blocs disque (exprimés en blocs de 1024 octets). Pour chacune, il existe deux limites : la limite "douce" : lorsque cette limite est atteinte ou dépassée, un message d'avertissement est affiché lors de chaque nouvelle allocation de fichier ou de bloc ; la limite "dure" : lorsque cette limite est atteinte, il est impossible à l'utilisateur de créer de nouveau fichier ou d'allouer de nouveau bloc. La limite "douce" se transforme en limite "dure" quand elle a été atteinte ou dépassée depuis un certain temps (sept jours par défaut). ### Statistiques sur les quota Tout utilisateur peut obtenir l'état des quota qui lui sont attribués (les limites sur le nombre de fichiers et de blocs qui lui sont alloués) grâce à la commande `quota`. Le super-utilisateur peut obtenir les mêmes informations sur tout utilisateur ou groupe avec la même commande : `quota -u utilisateur` ou `quota -g groupe`. Il peut de plus utiliser la commande `repquota` pour obtenir une liste des quota associés à un ou plusieurs systèmes de fichiers. ### Autres documentations sur les quota L'implémentation des quota dans Linux est compatible avec l'implémentation originale dans 4.2BSD Unix. Toutes les documentations concernant les quota dans BSD, que ce soit au niveau des commandes ou au niveau de l'interface de programmation, sont donc utilisables. Les pages de manuel des utilitaires sont assez claires et très instructives. Enfin, les documentations diffusées en format HTML forment une bonne introduction à la gestion des quota. ## 7.6 mtools Plutôt que de monter vos partitions MS-DOS, je vous conseille d'utiliser les mtools. Il s'agit de l'équivalent des commandes MS-DOS, mais avec un `m` avant ! Exemple : `mcopy toto.c a:` . Si vous souhaitez copier un fichier texte pour qu'il soit exploitable sous MS-DOS, ou l'inverse, n'oubliez pas d'ajouter l'option `-t` : cela convertit le caractère de fin de ligne qui est différent entre les deux systèmes. En principe, ils sont déjà à peu près configurés. Au cas où, vous devez modifier le fichier `/etc/mtools.conf`.
>     drive a: file="/dev/fd0" exclusive
>     drive b: file="/dev/fd1" exclusive

>     # 1er disque Dur
>     drive c: file="/dev/hda1"

>     # 2nd disque Dur
>     drive d: file="/dev/sda1"

>     mtools_lower_case=1
> Attention : le fichier a été modifié depuis la dernière version. C'est ici le dernier format qui est présenté car beaucoup plus clair et simple à utiliser. De plus, cette nouvelle version permet d'utiliser les noms longs (vfat de MS-Windows 95). ## 7.7 Swap : création de la partition Pour rajouter une partition de swap de 8 Mo (8192 Ko), il faut d'abord créer la partition à l'aide du programme `fdisk`, puis soit vous passez par le programme setup de la Slackware, soit vous le faites à la main (ATTENTION : commande DANGEREUSE, destruction du contenu de la partition concernée ASSURÉE) : `mkswap /dev/hda3 8192` Rajoutez la ligne `/dev/hda3 swap swap defaults 0 0` dans `/etc/fstab`. Enfin, pour que ça fonctionne, réamorcez la machine ou lancez `swapon -a`. ## 7.8 Swap : fichier Pour le fichier, c'est plus compliqué. Invoquer :
>     dd if=/dev/zero of=/usr2/swap_file bs=1024 count=8192
>     mkswap /usr2/swap_file 8192
> Ajoutez dans `/etc/fstab` la ligne : `/usr2/swap_file /usr2 swap defaults 0 0`. Faites bien attention à mettre cette ligne après le montage de la partition `/usr2`. Sinon, ce n'est pas près de fonctionner. Désormais, vous êtes obligé pour quitter Linux de faire un
>     swapoff -a
>     reboot           #Ou autre
> En effet, si vous ne désactivez pas le fichier d'échange, Linux ne va pas pouvoir démonter la partition, et donc, il fera un `fsck` dessus à chaque fois que vous relancerez votre machine. Il est aussi possible, avec certains systèmes, de placer la commande `swapoff` dans `/etc/rc.d/rc.K` ou bien `/etc/rc.d/init.d/halt` afin d'automatiser cela. ## 7.9 Ajouter un utilisateur, un groupe Si vous possèdez la Red Hat, utilisez le panneau de configuration (`control-panel` ou bien directement `usercfg`, utilisables par root sous X Window) : c'est vraiment très bien fait. Ajouter un utilisateur se fait en deux temps et trois mouvements. Deux fichiers sont importants : `/etc/passwd` et `/etc/group`. Une ligne du fichier passwd est composée de cette manière :
>     gandalf::501:100:Eric Dumas:/home/gandalf:/bin/bash
>     sgandalf::0:0:Super Eric Dumas:/:/bin/sh
> Une ligne est composée de 7 colonnes : Nom de l'utilisateur : 8 caractères max ; Mot de passe chiffré ; Numéro d'identificateur unique de l'utilisateur (uid). Rq : 0 = root ; Numéro du groupe (gid) ; Nom "officiel" de l'utilisateur (dit GECOS) ; Répertoire racine de l'utilisateur ; Interpréteur de commandes. Si le champ mot de passe contient le caractère `x`, c'est que vous utilisez les `shadow`. Le mot de passe chiffré se trouve dans le fichier `/etc/shadow`. Cette configuration permet en plus de définir la durée de validité des mots de passe. Le fichier `/etc/group` contient la liste des groupes de la machine. Par exemple, le groupe 100 est :
>     users::100:games,gandalf
> 3. Pour ajouter un utilisateur toto, faire ajoutez-le dans `/etc/passwd` ; si besoin est, créez le groupe dans lequel il va se trouver, en modifiant `/etc/group` ; créez son home directory :
>                mkdir /home/toto
>                cp /etc/skel/* /home/toto
>                chown -R toto.le_groupe_de_toto /home/toto
> Enfin, donnez-lui un mot de passe en tapant `passwd toto` . Vous n'avez plus qu'à essayer. Je vous conseille très fortement de travailler sous un utilisateur commun. En effet, il est très dangereux de travailler en root. Une fausse manipulation et vous devez tout réinstaller, voire perdre de précieux fichiers personnels. ## 7.10 Lancements de programmes personnels lors du boot : /etc/rc.d/rc.local C'est dans ce fichier que vous allez mettre tous les programmes personnels que vous souhaitez lancer au boot. En voici une version :
>     #! /bin/sh

>     # du menage en v'la,...
>     echo "Cleaning /tmp..."
>     find /tmp -type f -mtime +1 | xargs -r rm
>     find /tmp -type d -mtime +1 | xargs -r rmdir

>     # Vive l'azertyuiop :-)

>     echo "Loading french keyboard..."
>     /usr/bin/loadkeys /usr/lib/kbd/keytables/fr-latin1.map
> Ce qui est important, c'est le clavier français. Si vous ajoutez cette ligne, le clavier sera français dès le boot. En cas de problème il faut modifier ainsi fr-latin1.map :
>     keycode   3 = eacute           two              asciitilde
>     keycode   8 = egrave           seven            grave
>     keycode  10 = ccedilla         nine             asciicircum
>     keycode  14 = Delete           BackSpace
> ## 7.11 Ordonnancement de travaux : la crontab La crontab est une table qui contient des commandes qui doivent être lancées à intervalle régulier. Vous pouvez y mettre la sauvegarde journalière, etc. Le format est assez simple :
>     # Faire une sauvegarde tous les  Lundi a 2 heures du matin
>     0  2  *    * 1 /home/gandalf/backup
>     # Rebooter la machine tous 1ers et 15 du mois a 4h15.
>     15 4  1,15 * * /sbin/shutdown -r +3
> Les 5 premières colonnes sont : Minute (0 à 59) ; Heure (0 à 23) ; Jour du mois (1 à 31) ; Mois (1 à 12) ; Jour de la semaine (0 à 6 : 0 = Dimanche, 1 = Lundi). Ensuite vient la commande. Cette crontab est très utile si vous utilisez UUCP (pour envoyer le courrier, récupérer les news, etc). Tout utilisateur peut se créer une crontab grâce à la commande `crontab`. ## 7.12 Imprimer ! Maintenant que la machine fonctionne, voyons comment imprimer. Les imprimantes sont gérées par le programme `lpc` et par le démon `lpd`. Le démon `lpd` doit être lancé au boot. Il est lancé soit dans `rc.M` soit dans `rc.inetd2` (vous devez le voir lorsqu'il lance tous les démons de la machine. Si ce n'est pas le cas, il faut décommenter quelques lignes dans l'un des fichiers cités). Supposons que l'imprimante s'appelle `betty`. Dans un premier temps, dans le fichier `/etc/rc.d/rc.local`, ajoutez
>     echo "Setting up printer betty"
>     /usr/sbin/lpc up betty
> Passons maintenant aux choses sérieuses. Le fichier dans lequel va être décrit l'imprimante est le fichier `/etc/printcap`. Exemple :
>     betty|lp:lp=/dev/lp1:sd=/var/spool/lp1:sh:\
>        lf=/var/adm/lpd-errs:of=/etc/start-dj500:
> La première colonne représente le nom de l'imprimante. J'ai mis `betty` et `lp` car de cette manière, c'est l'imprimante par défaut. Ensuite, la configuration se fait via des mots-clefs. Pour plus d'information, faites `man printcap`. Voici quand même une description de ceux utilisés. lp : device sur lequel est branché l'imprimante (LPT1 ici) ; sd : répertoire du spool d'impression ; sh : supprime la page d'entête ; lf : fichier d'erreurs ; of : programme de filtrage. Comment ça marche ? Bon, supposons que j'ai un fichier `toto.ps`. Je fais donc `lpr toto.ps` (ou `lpr -Pbetty toto.ps`). Le fichier va être déposé dans le répertoire `/var/spool/lp1`. Le démon va ensuite envoyer le fichier sur le programme de filtrage. Ce système permet d'imprimer des fichiers ayant des formats assez variés. Voici le fichier de filtrage (Pour HP-500,510,520,etc).
>     #!/bin/sh
>     # Script d'impression pour imprimante HP-500 Noir et Blanc
>     #
>     # Eric.Dumas@freenix.org
>     #
>     # Version 2.0
>     #
>     # 5/01/95   (ED) : Ajout du format dvi ;
>     # 27/10/95  (ED) : Conversion des fichiers textes en fichier PostScript ;
>     # 01/11/95  (ED) : Un peu de ménage ;
>     # 12/08/96  (ED) : modification pour gs
>     # 04/12/96  (ED) : quelques corrections et ajouts.

>     TmpDir=/tmp
>     TmpFile=$TmpDir/deskjet.$$

>     # Utilisateur à prevenir en cas d'erreur
>     NOTIFY=lp-owner

>     # Programmes
>     CAT=/bin/cat
>     DVIPS=/usr/TeX/bin/dvips
>     PGS=/usr/bin/gs
>     AIIPS=/usr/local/bin/a2ps

>     # Chemins d'accès pour GS
>     GS_LIB=/usr/lib/ghostscript:/usr/lib/ghostscript/psfonts:\
>             /usr/lib/ghostscript/Type1:/usr/lib/ghostscript/fonts

>     # C'est parti
>     $CAT - > $TmpFile

>     echo -ne '\033E'

>     set -- `file $TmpFile`

>     shift

>     FileType=$*

>     # Transformation du PostScript en format Deskjet500
>     # résolution à 300x300 - format a4
>     GS="$PGS -I$GS_LIB -q -sDEVICE=djet500 -r300x300 -sPAPERSIZE=a4 -dNOPAUSE\
>     -sOutputFile=- - /usr/lib/ghostscript/quit.ps  || echo -ne '\033&10H'"

>     case $FileType in

>            *DVI*) # Fichier DVI
>              $DVIPS -t a4 $TmpFile \
>                -f | $GS
>             ;;

>            *PostScript*)    # Impression de fichiers Postscript
>              $CAT $TmpFile | $GS
>             ;;

>             *text*|*script*)
>              $CAT $TmpFile | $AIIPS -nP -r -8 | $GS
>             ;;

>             *data*)
>               echo -ne '\033&;k0G'  # C'est un et commercial sans ; !
>               /bin/cat $TmpFile
>              ;;

>             *)
>               echo "Deskjet: Unknow filetype $FileType" >> /dev/console
>               echo "Deskjet: $TmpFile Unknow filetype $FileType" | mail $NOTIFY
>             ;;
>     esac

>     /bin/rm -f $TmpFile
>     echo -ne '\033E'
> Ce script permet d'imprimer aussi bien des fichiers texte que des fichiers Postscript, dvi. Si vous souhaitez imprimer d'autres types de fichiers, il suffit de les rajouter ici. Merci de m'envoyer les modifications également : cela peut être bien que tout le monde en profite. Utiliser `lprm` pour retirer une requête d'impression active. ## 7.13 Timezone Timezone est un système fort utile qui permet la gestion de changement d'horaires d'été et d'hiver. La France se trouve dans une zone horaire : MET (Medium European Time, soit GMT + 1). La zone "MET DST" correspond à l'heure d'été activée (GMT + 2). Mieux vaut ne pas laisser tout cela reposer uniquement sur la variable `TZ`. Placez-vous dans le répertoire `/usr/lib/zoneinfo` et lisez le fichier time.doc. Les fichiers binaires placés dans `/usr/lib/zoneinfo` indiquent les règles de calcul de l'heure dans différentes zones du globe. Copier le fichier `MET` sous le nom de `/usr/lib/zoneinfo/localtime`, puis faire un lien symbolique de ce fichier sur `/usr/lib/zoneinfo/posixrules`. Commandes :
>     # cd /usr/lib/zoneinfo
>     # cp MET localtime
>     # ln -sf localtime posixrules
> Utilisez ensuite la commande `clock` pour mettre le système à l'heure. Deux possibilités : La machine est à l'heure GMT ; La machine est à l'heure locale. La première solution est préférable, mais MS-DOS ne gère pas cette approche (:-)). L'horloge sera donc fausse sur ce système. Par contre tous les changements d'heure, deux fois par an, seront pris en charge par Linux. Dans ce cas, ajouter dans `/etc/rc.d/rc.local`, la commande `clock -u -s`. Linux s'ajustera sur l'horloge sauvegardée. Si la CMOS est à l'heure locale, la commande dans `/etc/rc.d/rc.local` devient `clock -s` et les changements d'heure ne seront automatiques que si la machine est allumée au moment des changements d'heure. Il faudra manuellement réécrire la nouvelle heure dans la CMOS par `clock -w`, ou mettre l'horloge à l'heure avec le setup. La commande `date` permet de vérifier la validité de l'heure : elle renvoie heure et timezone `date -u` donne toujours l'heure en GMT :
>     plux:/home/rene $ date
>     Tue Sep 28 20:16:46 MET 1993
>     plux:/home/rene $ date -u
>     Tue Sep 28 19:16:49 GMT 1993
> (En été, "MET DST" (Daylight Savings Time) serait indiqué). ## 7.14 Nouveaux changements d'heure Il s'avère que, depuis 1996, la date de changement d'heure a été décalée. Pour que Linux ne se mélange pas les pinceaux, il est nécessaire de faire certaines modifications. La manipulation se base sur l'utilisation du programme `zic`, le time zone compiler. Dans un fichier appellé `europe`, mettre :
>     Zone    MET     1:00      M-Eur     MET%s
>     Link    localtime MET
>     Rule    M-Eur   1986    max     -       Mar     lastSun 2:00s   1:00    " DST"
>     Rule    M-Eur   1986    1995    -       Sep     lastSun 2:00s   0       -
>     Rule    M-Eur   1996    max     -       Oct     lastSun 2:00s   0
> Pour mettre tout en place, lancer la commande :
>     gandalf# zic europe
> Pour vérifier que tout s'est bien passé, vous devez obtenir le résultat suivant :
>     gandalf# zdump -v MET | grep 1996
>     MET  Mon Nov 11 12:29:02 1996 MET
>     MET  Sun Mar 31 00:59:59 1996 GMT = Sun Mar 31 01:59:59 1996 MET isdst=0
>     MET  Sun Mar 31 01:00:00 1996 GMT = Sun Mar 31 03:00:00 1996 MET DST isdst=1
>     MET  Sun Oct 27 00:59:59 1996 GMT = Sun Oct 27 02:59:59 1996 MET DST isdst=1
>     MET  Sun Oct 27 01:00:00 1996 GMT = Sun Oct 27 02:00:00 1996 MET isdst=0
> ## 7.15 locate Lorsque vous installez le package GNU "find", en plus du programme de recherche se trouve un programme `locate` qui permet de retrouver rapidement l'emplacement d'un fichier. Ce programme se trouve dans certaines distributions dans `/usr/lib/locate`. Lancez, en tant que `root`, `/usr/lib/locate/updatedb`. Cela invoquera un `find /` sur les disques montés et placera les noms de tous les fichiers (sous forme d'une table de hachage) dans `/usr/lib/locate/find.codes`. `locate` permettra ensuite de localiser l'un d'eux. Remarque : lorsque vous lancez ce programme, pensez à démonter les partitions MS-DOS et votre CD-ROM ! Une autre solution assez agréable consiste à insérer dans la crontab la ligne :
>     updatedb --prunepaths='/tmp /usr/tmp /var/tmp /proc /users /root /dos
>     /mnt /var/adm /var/spool /var/catman /home'
> . Cette commande réalise la mise à jour de l'arborescence sans les fichiers temporaires, l'arborescence utilisateur, une partition MS-DOS, etc. Il est souhaitable d'exclure les répertoires utilisteurs des utilisateurs. En effet, ces partitions contiennent normalement de nombreux fichiers. Mais cela pose un grave problème de sécurité, car tout utilisateur peut sinon connaître le nom des fichiers du voisin. ## 7.16 CD-ROM ATAPI Bon, les CD-ROM en général ne posent pas trop de problèmes, sauf les ATAPI ancienne version. En effet, le CD est géré sur un deuxième contrôleur disque propriétaire. Procédons dans l'ordre : recompiler le noyau avec l'option CD ATAPI IDE et le support du système de fichiers iso9660 ; réamorcer la machine. Au niveau de LILO, taper : `Linux hdd=cdrom`. Attention : vous êtes en qwerty ici. créer un lien symbolique entre `/dev/hdd` (ou `hdc`) et `/dev/cdrom`. `ln -s /dev/hdd /dev/cdrom`. créer le répertoire `/cdrom` et taper : `mount -t iso9660 -o ro /dev/cdrom /cdrom`. Normalement, le CD est monté ! En cas de problème il faut tenter de : configurer le lecteur en mode EIDE "master" ; laisser un CD chargé durant le boot ; booter, attendre un moment puis rebooter à chaud (sans éteindre ni actionner reset : donc par control-alt-del) afin de laisser au lecteur le temps de s'ébrouer. Avec les nouveaux lecteurs, il suffit d'activer le support ATAPI pour les lecteurs de CD-ROM, et lors de l'amorçage, le lecteur doit être détecté :
>     hdc: UJDCD6700, ATAPI CDROM drive
> ## 7.17 Mettre une console externe comme console Certains utilisateurs peuvent vouloir mettre comme console un minitel ou un vieux vt100 qui ne passe pas sur la carte vidéo mais sur le port série. Il suffit d'ajouter dans le fichier `lilo.conf` la ligne suivante :
>     append = "scon=0x03f8  serial=0,9600n8"
> ## 7.18 Deux cartes réseaux Certaines machines possèdent deux (ou plus) cartes réseaux. Pour qu'elles soient toutes les deux reconnues, il est nécessaire d'ajouter dans la configuration de LILO :
>     append="ether=0,0,eth1"
> ## 7.19 Les fichiers d'initialisation des interpréteurs de commandes Voici la description des fichiers qui sont chargés lors de la connexion d'un utilisateur. Le nom du ou des fichiers est spécifique à l'interpréteur de commandes utilisé. Dans le cas de `bash`, c'est un peu compliqué. D'après la page de manuel de `bash`, lors d'une connexion interactive, il exécute : `/etc/profile` s'il existe ; `~/.bash_profile` s'il existe, sinon `~/.bash_login` s'il existe, sinon `~/.profile` s'il existe ; `~/.bashrc` s'il existe. Dans le cas où `bash` est invoqué en tant que `sh`, il n'exécute que les fichiers `/etc/profile` et `~/.profile` s'ils existent. Dans le cas de `ksh`, la page de manuel est moins précise mais une étude rapide du code source montre que : `/etc/profile` est exécuté s'il existe ; `~/.profile` est exécuté s'il existe, si le numéro d'utilisateur effectif est identique au numéro d'utilisateur réel et si le numéro de groupe effectif est égal au numéro de groupe réel ; `/etc/suid_profile` est exécuté s'il existe, si les numéros d'utilisateur effectif et réel diffèrent ou si les numéros de groupe effectif et réel diffèrent ; enfin, si la variable d'environnement `ENV` est positionnée, le fichier dont le nom est contenu dans `$ENV` est exécuté s'il existe. Enfin, pour être complet sur les interpréteurs de commandes compatibles avec le Bourne Shell, citons le cas de `zsh` qui exécute : `/etc/zshenv` s'il existe ; `~/.zshenv` (ou `$ZDOTDIR/.zshenv` si ZDOTDIR est positionné) s'il existe ; `/etc/zprofile` s'il existe ; `~/.zprofile` (ou `$ZDOTDIR/.zprofile`) s'il existe ; `/etc/zshrc` s'il existe ; `~/.zshrc` (ou `$ZDOTDIR/.zshrc`) s'il existe. Dans le cas de `csh` (enfin plutôt tcsh) : `/etc/csh.cshrc` est exécuté s'il existe ; `/etc/csh.login` est exécuté s'il existe ; `~/.tcshrc` est exécuté s'il existe, sinon `~/.cshrc` est exécuté s'il existe ; `~/.history` (ou le contenu de la variable `histfile`) est chargé en mémoire s'il existe ; `~/.login` est exécuté s'il existe ; `~/.cshdirs` (ou le contenu de la variable `dirsfile`) est chargé en mémoire s'il existe. ## 7.20 Les sauvegardes sous Linux Comme tout système Unix, Linux fournit des outils standards pour réaliser les sauvegardes des disques. Principalement deux types d'outils sont actuellement utilisés. ### dump et restore Les outils `dump` et `restore` ont été adaptés pour Linux par Rémy Card. Ils sont livrés dans les distributions. Une fois les sources compilés et installés, l'utilisation de `dump` et `restore` est relativement simple. Pour effectuer la sauvegarde d'une partition `/dev/sda1` sur `/dev/rmt0`, il suffit de faire par exemple :
>     gandalf# dump 0sfu 3600 /dev/rmt0 /dev/sda1
>     gandalf# dump 0sfu ondee:/dev/rmt0 /dev/sda1
> La deuxième commande permet de sauvegarder un disque sur un périphérique distant (par exemple situé ici sur la machine ondee). Les options de `dump` peuvent sembler complexes. En voici une courte description : 0 à 9 : niveau de sauvegarde. 0 correspond à une sauvegarde complète, alors que les autres niveaux n correspondent à la sauvegarde des fichiers qui ont été modifiés depuis la nième sauvegarde ; s : taille de la bande en pieds ; f : fichier - peut être composé de `machine:fichier` ; u : écriture de la date et du niveau de sauvegarde dans le fichier `/etc/dumpdates`. Il existe d'autres options. Pour plus renseignements, consultez les pages de manuel. Il existe deux modes pour effectuer une restauration : en ligne de commande ou en mode dit "interactif". Le deuxième mode est plus simple pour des restaurations partielles. Le premier est surtout utilisé pour des restaurations complètes. Pour restaurer la bande en mode interactif il suffit de faire
>     gandalf# restore -if /dev/rmt0
>     gandalf# restore -if ondee:/dev/rmt0
> Dans ce cas, un mini-interpréteur de commandes est lancé. Utiliser la commande `help` pour plus de détails. Pour restaurer une bande complètement, lancez :
>     gandalf# restore rf /dev/rmt0
> Note importante : pour l'utilisation de `dump` et `restore` à travers un réseau (sauvegarde sur des périphériques distants), vous devez utiliser des fichiers `.rhosts`. Dans l'exemple de sauvegarde ci-dessus, la machine ondee doit avoir
>     #cat ~root/.rhosts
>     gandalf
>     #
> Attention toutefois aux failles de sécurité engendrées par les fichiers `.rhosts`. L'utilisation de périphériques distants nécessite également la présence du programme `rmt` sur la machine gérant les périphériques de sauvegarde. Ce programme est inclus dans la distribution source de `dump` pour Linux. ### tar A la différence de `dump` ou `restore`, `tar` permet de sauvegarder les fichiers désirés, d'exclure certains répertoires, etc. Il est à noter que le tar utilisé sous Linux est le tar GNU. Il possède certaines options particulières. Pour connaître toutes les options possibles, je vous conseille de faire `tar --help` . Une utilisation simple de `tar` peut être illustrée avec la sauvegarde d'une partition d'utilisateurs :
>     # tar cvf /dev/rmt0 /users | mail backup-user
> La liste des fichiers sera ainsi envoyée à l'utilisateur backup-user. Certains sites utilisent exclusivement `tar` pour effectuer leurs sauvegardes, c'est un choix. ## 7.21 Num Lock au démarrage Pour configurer la touche Num Lock au démarrage (par exemple pour qu'elle soit positionnée), il suffit de mettre dans `/etc/rc.d/rc.local`
>     for tty in /dev/tty[1-9]*;
>     do
>          setleds -D +num < $tty > /dev/null
>     done
> ## 7.22 Les fichiers core Certains développeurs aiment exploiter le contenu des fichiers `core`. Or, sous Linux, ils sont désactivés par défaut. Pour pouvoir les générer, il faut introduire : `ulimit -c unlimited` sous `bash` ou `limit coredumpsize unlimited` ## 7.23 Accounting - lastcomm Le système d'accounting (historique des programmes invoqués) est implémenté dans Linux (mais bon, je n'ai jamais testé car ça fait un peu Big Brother is Watching You). Il faut normalement compiler le paquetage acct-1.3.73.tar.gz et suivre les instructions qui sont livrées avec. Ça se trouve sur le site `ftp.lip6.fr` dans le répertoire `/pub/linux/sunsite/system/Admin/accounts` ainsi que sur le site ftp://iguana.hut.fi/pub/linux/Kernel/process_accounting. Attention : il est nécessaire d'avoir un noyau 1.3.* ou un 2.0.* au minimum. Voici le résultat :
>     # lastcomm | more
>     Command          Flags User     Tty    PagFlt Time        Endtime
>     clear            -     merlin   ttyp2      85   0.00 secs Tue Aug  6 13:26:07
>     in.identd        -     root     __        100   0.00 secs Tue Aug  6 13:23:23
>     color-ls         -     merlin   ttyp2     121   0.01 secs Tue Aug  6 13:23:02
>     telnet           -     merlin   ttyp2     142   2.77 secs Tue Aug  6 13:23:01
>     Pnews            F     merlin   ttyp3      33   0.01 secs Tue Aug  6 13:22:15
>     sed              -     merlin   ttyp3     132   0.02 secs Tue Aug  6 13:22:15
>     Pnews            F     merlin   ttyp3      34   0.01 secs Tue Aug  6 13:22:15
>     sed              -     merlin   ttyp3     145   0.02 secs Tue Aug  6 13:22:15
>     cat              -     merlin   ttyp3      80   0.01 secs Tue Aug  6 13:22:13
>     Pnews            F     merlin   ttyp3      29   0.00 secs Tue Aug  6 13:22:13
> Il faut faire attention car ce système a tendance à prendre beaucoup de place. La solution pour résoudre ce problème est de lancer le système d'accounting de cette manière :
>     #!/bin/sh
>     # Lancement de l'accounting

>     accton /var/log/acct
>     accttrim -n 2000 /var/log/acct 2> /dev/null
> Page suivante Page précédente Table des matières