traduction du 2 janvier 1999 Astuces Linux HOWTO
 Paul Anderson <mailto:[email protected]>, traduit par
 Arnaud Gomes-do-Vale <mailto:[email protected]> et Nat
 Makar�vitch <mailto:[email protected]>
 v3.6, Juin 1998

 Ce document contient ces astuces et r�glages difficiles � trouver qui
 rendent Linux un peu plus sympathique.
 ______________________________________________________________________

 Table des mati�res


 1. Introduction

 2. Astuces simples

    2.1 Un truc pratique pour syslog.
    2.2 Un script pour afficher les HOWTO compact�s.
    2.3 Reste-t-il assez de place libre ?
    2.4 Un utilitaire pour nettoyer vos fichiers journaux      (logs).
    2.5 Un script pratique pour nettoyer les fichiers
    2.6 D�placement de r�pertoires inter partitions Linux (filesystems).
    2.7 Trouver les plus gros r�pertoires.
    2.8 La Linux Gazette.
    2.9 Indication permettant de r�soudre le probl�me pos� par le VPATH du GNU make version 3.7.
    2.10 Comment interdire � ma machine de lancer fsck apr�s chaque d�marrage ?
    2.11 Comment �viter les lancements de fsck, au boot, d�s au "device busy" ?
    2.12 Comment trouver les plus gros fichiers sur votre disque dur.
    2.13 Comment imprimer sur des pages avec marges ?
    2.14 M�thode permettant de rechercher des expressions rationnelles dans des fichiers.
    2.15 Un script pour faire le m�nage derri�re les      programmes qui cr�ent des fichiers de sauvegarde.
    2.16 Comment trouver le processus qui occupe le plus de      m�moire.
    2.17 Configuration de
    2.18 Utilisation de ctags pour faciliter la programmation
    2.19 Pourquoi sendmail se bloque-t-il pendant 5 minutes au      d�marrage d'une Red Hat ?
    2.20 Comment configurer une Red Hat pour avoir
    2.21 Comment trouver quelle biblioth�que de /usr/lib      contient une fonction donn�e ?
    2.22 J'ai compil� un petit programme en C, mais quand je le      lance, je ne vois aucun r�sultat !

 3. Astuces d�taill�es

    3.1 Linux et Windows peuvent utiliser une m�me partition pour le swap !
    3.2 R�cup�ration de fichiers effac�s.
    3.3 Comment utiliser le marqueur d'immutabilit�.
    3.4 Une suggestion quant � l'endroit o� mettre ce      que vous rajoutez.
    3.5 Conversion de tous les fichiers d'un r�pertoire en      minuscules.
    3.6 Mise � jour de Sendmail.
    3.7 Quelques astuces pour les administrateurs syst�me      d�butants.
    3.8 Comment configurer


 ______________________________________________________________________

 11..  IInnttrroodduuccttiioonn

 Ce document est le LLiinnuuxx AAssttuucceess HHOOWWTTOO (titre original : LLiinnuuxx TTiippss
 HHOOWWTTOO), une liste de trucs et d'optimisations bien pratiques, qui
 contribuent � rendre Linux plus agr�able. Tout ce qui est ici sort ou
 bien de ma t�te, ou bien de l'ancien Astuces HOWTO (apr�s tout,
 pourquoi enlever des astuces qui marchent ?) Alors envoyez-moi vos
 astuces pr�f�r�es (NdT : en anglais !) pour que je puisse les inclure
 dans la prochaine version du Linux Astuces HOWTO.

 Paul Anderson _R_�_d_a_c_t_e_u_r _d_e _"_L_i_n_u_x _T_I_P_S _H_O_W_T_O_"

 [email protected]



 22..  AAssttuucceess ssiimmpplleess

 22..11..  UUnn ttrruucc pprraattiiqquuee ppoouurr ssyysslloogg.. PPaauull AAnnddeerrssoonn,, rr��ddaacctteeuurr       dduu
 LLiinnuuxx AAssttuucceess HHOOWWTTOO ..

 Editez le ficher /etc/syslog.conf et ajoutez-y la ligne suivante :



      # Tout envoyer sur tty8
      *.*                                      /dev/tty8




 Attention : PENSEZ � UTILISER DES TABULATIONS ! Syslog n'aime pas les
 espaces.



 22..22..  UUnn ssccrriipptt ppoouurr aaffffiicchheerr lleess HHOOWWTTOO ccoommppaacctt��ss.. DDiiddiieerr       JJuuggeess,,
 ddjj@@ddeessttiinn..nnffddss..nneett ..

 De d�butant � d�butant, voici un petit script qui facilite la lectures
 des howto. Mes howto sont dans /usr/doc/faq/howto/ et sont compress�s
 avec gzip. Les fichiers s'appellent XXX-HOWTO.gz, o� XXX est le titre.
 J'ai appel� le script suivant howto et je l'ai plac� dans
 /usr/local/sbin/ :



      ______________________________________________________________________
      #!/bin/sh
      if [ "$1" = "" ]; then
          ls /usr/doc/faq/howto | less
      else
          gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
      fi
      ______________________________________________________________________




 Appel� sans argument, il affiche la liste des howto disponibles. Quand
 on lui passe en argument la premi�re partie du nom du fichier (avant
 le trait d'union), il d�compacte le document (en laissant l'original
 intact) et l'affiche � l'�cran.

 Par exemple, pour afficher le document Serial-HOWTO.gz, tapez :


      $ howto serial






 22..33..  zzoocckkii@@ggoollddffiisshh..ccuubbee..nneett ..  RReessttee--tt--iill aasssseezz ddee ppllaaccee lliibbrree ??
 HHaannss ZZooeebbeelleeiinn,,


 Voici un script qui v�rifie � intervalles r�guliers qu'il reste de la
 place sur tout ce qui est mont� (disques durs, CDROM, disquettes...)

 En cas de p�nurie d'espace libre, un message est affich� � l'�cran
 toutes les X secondes et un courrier �lectronique est envoy� pour
 chaque p�riph�rique qui d�borde.




























































 ______________________________________________________________________
 #!/bin/sh

 #
 # $Id: Tips-HOWTO.sgml,v 1.2 1999/02/02 02:11:38 arnaud Exp $
 #

 #
 # Depuis que j'ai �t� confront� � des
 # messages d'erreur myst�rieux pendant les compilations
 # quand les fichiers temporaires remplissaient mes disques, j'ai
 # �crit �a pour �tre averti avant que les disques
 # ne soient pleins.
 #
 # Si �a a empech� vos serveurs d'exploser, envoyez
 # les courriers de remerciement � [email protected].
 # Si votre site flambe � cause de �a, d�sol�
 # mais je vous avais pr�venu: c'est votre probl�me
 # Si vous savez vraiment vous servir de sed, excusez moi :)
 #

 #
 # Lancez-le et vous pouvez l'oublier: mettez "check_hdspace &"
 # dans rc.local. Il v�rifie l'espace libre toutes les
 # $SLEEPTIME secondes. Vous pouvez m�me surveiller vos
 # disquettes et vos bandes.  :)
 # Si l'espace libre est inf�rieur � $MINFREE (Ko),
 # le script va afficher un message d'avertissement et envoyer un
 # courrier � $MAIL_TO_ME pour chaque p�riph�rique
 # concern�. D�s qu'il y a � nouveau plus de place
 # libre que la limite, le syst�me d'envoi de courrier est
 # r�amorc�.
 #

 # RESTE � FAIRE:
 # Des $MINFREE diff�rents pour chaque p�riph�rique
 # Nettoyer les r�pertoires /*tmp des vieilleries en cas de
 #           p�nurie d'espace.


 DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # vos disques
 MINFREE=20480                           # la limite
 SLEEPTIME=10                            # secondes entre deux v�rifications
 MAIL_TO_ME='root@localhost'             # la personne � avertir


 # ------- rien � changer en dessous (j'esp�re :) -------

 MINMB=0
 ISFREE=0
 MAILED=""
 let MINMB=$MINFREE/1024         # oui, on fait �a bien :)

 while [ 1 ]; do
         DF="`/bin/df`"
                 for DEVICE in $DEVICES ; do
                 ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##`

                 if [ $ISFREE -le $MINFREE ] ; then
                         let ISMB=$ISFREE/1024
                         echo  "WARNING: $DEVICE only $ISMB mb free." >&2
                         #echo "more stuff here" >&2
                         echo -e "\a\a\a\a"

                         if [ -z  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                 echo "WARNING: $DEVICE only $ISMB mb free.      (Trigger is set to $MINMB mb)" \
                                 | mail -s "WARNING: $DEVICE only $ISMB mb free!" $MAIL_TO_ME
                                 MAILEDH="$MAILED $DEVICE"
                                 MAILED=$MAILEDH
                                 # rajoutez ce qu'il reste � faire
                                 # par exemple nettoyer les */tmp
                         fi
                         elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                 # Enlever le marqueur de courrier si
                                 # l'espace disponible remonte
                                 # au-dessus de la limite. Pour pouvoir
                                 # envoyer un nouveau message en cas de
                                 # besoin.
                                 MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
                                 MAILED=$MAILEDH
                         fi

                 done
                 sleep $SLEEPTIME

 done
 ______________________________________________________________________







 22..44..  ((llooggss)).. PPaauull AAnnddeerrssoonn,, rr��ddaacctteeuurr dduu LLiinnuuxx AAssttuucceess HHOOWWTTOO ..  UUnn
 uuttiilliittaaiirree ppoouurr nneettttooyyeerr vvooss ffiicchhiieerrss jjoouurrnnaauuxx

 Si vous �tes comme moi, vous avez une liste de diffusion avec 430
 inscrits et plus de 100 messages qui arrivent tous les jours par UUCP.
 Qu'est-ce qu'un bidouilleur peut bien faire avec ces �normes fichiers
 journaux ? Il peut installer chklogs. chklogs a �t� �crit par Emilio
 Grimaldo, [email protected], et la version 1.8 actuelle est
 disponible sur ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz.
 C'est tr�s simple � installer (il faut bien s�r lire le contenu du
 r�pertoire doc). Une fois le paquetage install�, rajoutez une entr�e �
 votre crontab :



      # Lance chklogs tous les jours � 21h
      00 21 * * *          /usr/local/sbin/chklogs -m




 Pendant que vous y �tes, n'oubliez pas de dire � l'auteur � quel point
 vous appr�ciez son logiciel :)



 22..55..  ccoorree .. OOttttoo HHaammmmeerrssmmiitthh ..  UUnn ssccrriipptt pprraattiiqquuee ppoouurr nneettttooyyeerr lleess
 ffiicchhiieerrss

 Cr�ez un fichier rmcores (l'auteur l'appelle handle-cores) contenant
 ceci :







 ______________________________________________________________________
 #!/bin/sh
 USAGE="$0 <directory> <message-file>"

 if [ $# != 2 ] ; then
         echo $USAGE
         exit
 fi

  echo Deleting...
 find $1 -name core -atime 7 -print -type f -exec rm {} \;

 echo e-mailing
 for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
 do
         echo $name
         cat $2 | mail $name
 done
 ______________________________________________________________________




 Et utilisez cron pour le lancer � intervalles r�guliers.



 22..66..  DD��ppllaacceemmeenntt ddee rr��ppeerrttooiirreess iinntteerr ppaarrttiittiioonnss LLiinnuuxx ((ffiilleessyysstteemmss))..
 AAllaann CCooxx,,  AA..CCooxx@@sswwaannsseeaa..aacc..uukk ..



      (cd /r�pertoire_source && tar cf - . ) | (cd /r�pertoire_cible && tar xvf -)




 _[ _E_t _p_a_s _c_d _/_r_�_p_e_r_t_o_i_r_e___s_o_u_r_c_e_; _t_a_r_._._._e_t_c_._, _q_u_i _l_a_i_s_s_e _l_a _p_o_s_s_i_b_i_l_i_t_�
 _d_e _b_o_u_s_i_l_l_e_r _u_n _r_�_p_e_r_t_o_i_r_e _e_n _c_a_s _d_e _p_r_o_b_l_�_m_e_. _M_e_r_c_i _� _J_i_m _D_e_n_n_i_s_,
 [email protected], qui me l'a signal�. -le r�dacteur ]



 22..77..  TTrroouuvveerr lleess pplluuss ggrrooss rr��ppeerrttooiirreess.. MMiicckk GGhhaazzeeyy ..

 Vous vous �tes d�j� demand� quels �taient les plus gros r�pertoires
 sur votre machine ?  Voici une fa�on de les trouver.



      du -S | sort -n






 22..88..  LLaa LLiinnuuxx GGaazzeettttee..

 Bravo et merci � John Fisk, le cr�ateur de la Linux Gazette. C'est un
 excellent magazine en ligne, qui plus est GGRRAATTUUIITT !! Que demander de
 plus ? Vous pouvez le trouver � l'adresse :




 http://www.linuxgazette.com




 Au fait, il s'av�re que (1) la LG est maintenant mensuelle et (2) elle
 n'est plus maintenue par John Fisk, mais par l'�quipe de SSC.



 22..99..  IInnddiiccaattiioonn ppeerrmmeettttaanntt ddee rr��ssoouuddrree llee pprroobbll��mmee ppooss�� ppaarr llee VVPPAATTHH
 dduu GGNNUU mmaakkee vveerrssiioonn 33..77.. TTeedd SStteerrnn,,  sstteerrnn@@aammaatthh..wwaasshhiinnggttoonn..eedduu ..

 J'ignore si ce probl�me concerne de nombreux utilisateurs mais l'une
 des caract�ristiques de la version 3.7 du GNU make ne m'enthousiasme
 pas. Il s'agit du comportement d'un VPATH sur r�pertoire absolu. Un
 robuste patch corrige cela, vous pourrez l'obtenir aupr�s de Paul D.
 Smith <[email protected]>  (-- Veuillez r�diger votre courrier en
 anglais !  NDT--) .  Ce dernier poste dans le groupe gnu.utils.bug un
 article contenant ce patch et sa documentation apr�s parution de
 chaque nouvelle version du GNU make.  En ce qui me concerne... il est
 install� sur tous les syst�mes auxquels j'ai acc�s !



 22..1100..  CCoommmmeenntt iinntteerrddiirree �� mmaa mmaacchhiinnee ddee llaanncceerr ffsscckk aapprr��ss cchhaaqquuee
 dd��mmaarrrraaggee ?? DDaallee LLuuttzz,,  ddaall@@wwiimmsseeyy..ccoomm ..

 R�ponse : Apr�s recompilation du noyau le syst�me de fichiers est
 consid�r� comme non v�rifi� ("marked as dirty"), ce qui implique que
 fsck sera mis en action lors de chaque d�marrage. Pour �viter cela
 lancer :


      rdev -R /zImage 1




 Cela modifie le noyau qui, d�s lors, consid�re que le syst�me de
 fichiers est sain.


 Note : Ajoutez, si vous employez LILO, read-only � la section de
 l'image de boot de votre fichier de configuration LILO (souvent nomm�
 /etc/lilo/config ou /etc/lilo.conf).



 22..1111..  CCoommmmeenntt ��vviitteerr lleess llaanncceemmeennttss ddee ffsscckk,, aauu bboooott,, dd��ss aauu ""ddeevviiccee
 bbuussyy"" ?? JJoonn TToommbbss,,  jjoonn@@ggtteexx0022..uuss..eess ..

 Si votre syst�me conna�t de fr�quentes erreurs de type "device busy"
 au d�marrage qui laissent le syst�me de fichiers dans un �tat exigeant
 un fsck, veuillez suivre les recommandations suivantes :

 Ajoutez, au fichier /etc/rc.d/init.d/halt ou /etc/rc.d/rc.0, la ligne


      mount -o remount,ro /mount.dir




 pour tous vos syst�mes de fichiers mont�s, sauf la racine, avant
 l'invocation de umount -a. Cela signifie que si, pour une quelconque
 raison, "shutdown" ne parvient pas � tuer tous les processus puis
 d�monter les partitions ces derni�res seront malgr� tout consid�r�es
 comme saines lors du red�marrage.  Cette astuce a consid�rablement
 �court� le temps de d�marrage de mon syst�me !



 22..1122..  dduurr.. SSiimmoonn AAmmoorr,,  ssiimmoonn@@ffoooobbaarr..ccoo..uukk ..  CCoommmmeenntt ttrroouuvveerr lleess
 pplluuss ggrrooss ffiicchhiieerrss ssuurr vvoottrree ddiissqquuee



      ls -l | sort +4n




 Pour ceux d'entre vous qui sont vraiment � l'�troit, �a prend du
 temps, mais �a marche bien :



      cd /
      ls -lR | sort +4n






 22..1133..  CCoommmmeenntt iimmpprriimmeerr ssuurr ddeess ppaaggeess aavveecc mmaarrggeess ?? MMiikkee DDiicckkeeyy,,
 mmddiicckkeeyy@@tthhoorrpplluuss..lliibb..ppuurrdduuee..eedduu ..



      ______________________________________________________________________
              #!/bin/sh
              # /usr/local/bin/print
              # Une simple sortie format�e pour permettre de
              # perforer les feuilles afin de les mettre dans un classeur

              cat $1 | pr -t -o 5 -w 85 | lpr
      ______________________________________________________________________






 22..1144..  MM��tthhooddee ppeerrmmeettttaanntt ddee rreecchheerrcchheerr ddeess eexxpprreessssiioonnss rraattiioonnnneelllleess
 ddaannss ddeess ffiicchhiieerrss.. RRaauull DDeelluutthh MMiilllleerr,,  rroocckkwweellll@@nnoovvaa..uummdd..eedduu ..

 Je d�signe, par "expressions rationnelles", les regexp de "grep" et
 consorts.

 J'ai appel� ce script "forall" et l'utilise ainsi :


      forall /usr/include grep -i ioctl
      forall /usr/man grep ioctl




 Voici le script forall:

 ______________________________________________________________________
 #!/bin/sh
 if [ 1 = `expr 2 \> $#` ]
 then
         echo Syntaxe: $0 repertoire commande [arguments]
         exit 1
 fi
 dir=$1
 shift
 find $dir -type f -print | xargs "$@"
 ______________________________________________________________________






 22..1155..  pprrooggrraammmmeess qquuii ccrr��eenntt ddeess ffiicchhiieerrss ddee ssaauuvveeggaarrddee..  UUnn ssccrriipptt
 ppoouurr ffaaiirree llee mm��nnaaggee ddeerrrrii��rree lleess

 Voici un petit script de deux lignes qui parcourt une arborescence et
 qui y efface les fichiers de sauvegarde (# et ~) d'emacs, les fichiers
 .o, et les fichiers .log de TeX. Il compacte �galement les fichiers
 .tex et README. Sur mon syst�me, je l'ai appel� "squeeze".



      ______________________________________________________________________
      #!/bin/sh
      #SQUEEZE efface les fichiers superflus et compacte les fichiers .tex
      #et README.
      #Par Barry tolnas, [email protected]
      #
      echo nettoyage de $PWD
      find  $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec
      rm -f {} \;
      find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;
      ______________________________________________________________________






 22..1166..  mm��mmooiirree.. SSiimmoonn AAmmoorr ..  CCoommmmeenntt ttrroouuvveerr llee pprroocceessssuuss qquuii ooccccuuppee
 llee pplluuss ddee



      ps -aux | sort +4n




 -OU-


      ps -aux | sort +5n








 22..1177..  AAnnddeerrssoonn,, rr��ddaacctteeuurr dduu LLiinnuuxx AAssttuucceess HHOOWWTTOO ..  CCoonnffiigguurraattiioonn ddee
 vvii  ppoouurr llaa pprrooggrraammmmaattiioonn eenn CC.. PPaauull

 Je passe beaucoup de temps � programmer en C, et j'ai pris le temps de
 configurer vi pour me faciliter la t�che. Voici le contenu de mon
 fichier .exrc :



      ______________________________________________________________________
      set autoindent
      set shiftwidth=4
      set backspace=2
      set ruler
      ______________________________________________________________________




 Qu'est-ce que �a fait ? autoindent force vi � indenter automatiquement
 toutes les lignes qui suivent la premi�re ligne indent�e, shiftwidth
 impose une taille de 4 espaces pour ^T, backspace configure la touche
 d'espacement arri�re, et ruler force l'affichage des num�ros de
 lignes. Notez que pour placer le curseur sur une ligne donn�e, par
 exemple la ligne 20, vous pouvez utiliser :



      vi +20 monfichier.c






 22..1188..  UUttiilliissaattiioonn ddee ccttaaggss ppoouurr ffaacciilliitteerr llaa pprrooggrraammmmaattiioonn

 Beaucoup de bidouilleurs ont d�j� ctags sur leur machine, mais ne s'en
 servent pas. Cela peut �tre tr�s pratique pour �diter des fonctions
 sp�cifiques. Supposez que vous avez une fonction dans l'un des
 nombreux fichiers sources contenus dans un r�pertoire pour un
 programme que vous �tes en train d'�crire, et que vous voulez �diter
 cette fonction pour faire une mise � jour. Appelons cette fonction
 foo(). Vous ne savez pas non plus o� elle se trouve dans le fichier
 source. C'est l� que ctags peut �tre tr�s pratique. Quand vous le
 lancez, ctags cr�e un fichier nomm� tags dans le r�pertoire courant,
 qui contient la liste de toutes les fonctions, le fichier source dans
 lequel elles se trouvent et leur emplacement dans ce fichier source.
 Le fichier tags ressemble � �a :



      ______________________________________________________________________

      ActiveIconManager       iconmgr.c       /^void ActiveIconManager(active)$/
      AddDefaultBindings      add_window.c    /^AddDefaultBindings ()$/
      AddEndResize    resize.c        /^AddEndResize(tmp_win)$/
      AddFuncButton   menus.c /^Bool AddFuncButton (num, cont, mods, func, menu, item)$/
      AddFuncKey      menus.c /^Bool AddFuncKey (name, cont, mods, func, menu, win_name, action)$/
      AddIconManager  iconmgr.c       /^WList *AddIconManager(tmp_win)$/
      AddIconRegion   icons.c /^AddIconRegion(geom, grav1, grav2, stepx, stepy)$/
      AddStartResize  resize.c        /^AddStartResize(tmp_win, x, y, w, h)$/
      AddToClientsList        workmgr.c       /^void AddToClientsList (workspace, client)$/
      AddToList       list.c  /^AddToList(list_head, name, ptr)$/
      ______________________________________________________________________

 Pour �diter, par exemple, AddEndResize() avec vim, tapez :



      vim -t AddEndResize




 Cela va ouvrir le bon fichier dans l'�diteur et placer le curseur au
 d�but de la fonction.



 22..1199..  dd��mmaarrrraaggee dd''uunnee RReedd HHaatt ?? PPaauull AAnnddeerrssoonn ..  PPoouurrqquuooii sseennddmmaaiill ssee
 bbllooqquuee--tt--iill ppeennddaanntt 55 mmiinnuutteess aauu

 C'est un probl�me assez courant, presque au point d'en faire une FAQ.
 Je ne sais pas si Red Hat corrige l'erreur dans sa distributions, mais
 vous pouvez r�parer �a vous-m�me. Si vous regardez dans votre fichier
 /etc/hosts, vous allez trouver quelque chose qui ressemble � �a :



      127.0.0.1        localhost        votremachine




 Quand sendmail d�marre, il fait une recherche sur le nom de votre
 machive (votremachine dans l'exemple). Ensuite, il trouve que
 l'adresse IP de la machine est 127.0.0.1; sendmail n'aime pas �a et
 recommence la recherche. Il continue comme �a pendant un moment avant
 d'abandonner. Corriger ce probl�me est tr�s facile : �ditez votre
 fichier /etc/hosts et mettez-y quelque chose comme �a :



      127.0.0.1        localhost
      10.56.142.1      votremachine






 22..2200..  PPaauull AAnnddeerrssoonn,,  ppaauull@@ggeeeekkyy11..eebbtteecchh..nneett ..  CCoommmmeenntt ccoonnffiigguurreerr
 uunnee RReedd HHaatt ppoouurr aavvooiirr llss  eenn ccoouulleeuurrss??

 La distribution Red Hat est fournie avec color-ls (ls en couleurs),
 mais je n'arrive pas � comprendre pourquoi ils ne le configurent pas
 pour utiliser les couleurs par d�faut. Voici une fa�on d'arranger �a.

 Commencez par taper eval `DIRCOLORS`

 Puis alias ls='ls --color=auto'

 Enfin, mettez la ligne "alias ....." dans votre /etc/bashrc.



 22..2211..  ccoonnttiieenntt uunnee ffoonnccttiioonn ddoonnnn��ee ?? PPaawweell VVeesseellooww ..  CCoommmmeenntt ttrroouuvveerr
 qquueellllee bbiibblliiootthh��qquuee ddee //uussrr//lliibb

 Vous �tes en train de compiler un programme et vous avez oubli� de
 lier une biblioth�que n�cessaire? Et gcc qui ne donne que les noms des
 fonctions manquantes... Voici une commande pour trouver ce que vous
 cherchez :



      for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done




 Remplacez tgetnum par le nom de la fonction que vous cherchez.



 22..2222..  llaannccee,, jjee nnee vvooiiss aauuccuunn rr��ssuullttaatt !!  JJ''aaii ccoommppiill�� uunn ppeettiitt pprroo��
 ggrraammmmee eenn CC,, mmaaiiss qquuaanndd jjee llee

 Vous avez compil� le programme et cr�� un programme appel� test, non?
 Linux a d�j� un programme test, qui teste si une certaine condition
 est vraie et qui n'affiche aucun r�sultat � l'�cran. Pour lancer votre
 programme test, tapez ./test.



 33..  AAssttuucceess dd��ttaaiillll��eess

 33..11..  LLiinnuuxx eett WWiinnddoowwss ppeeuuvveenntt uuttiilliisseerr uunnee mm��mmee ppaarrttiittiioonn ppoouurr llee
 sswwaapp !! TToonnyy AAcceerroo,,  aaccee33@@mmiiddwwaayy..uucchhiiccaaggoo..eedduu ..


 1. Formater la partition sous DOS puis y disposer le fichier d'�change
    de Windows. Ne pas employer Windows tout de suite afin de laisser
    ce fichier compl�tement "vide" pour faciliter son compactage.

 2. D�marrer Linux et sauver ce fichier dans un fichier.  Exemple (cas
    d'une partition de "swap" commun nomm�e /dev/hda8) :


      dd if=/dev/hda8 of=/etc/dosswap




 3. Compacter le fichier de swap :


      gzip -9 /etc/dosswap




 4. Ajouter au fichier /etc/rc la ligne suivante afin de pr�parer et
    installer la partition de swap lorsqu'elle est employ�e par Linux :
    _X_X_X_X_X _r_e_p_r_�_s_e_n_t_e _i_c_i _l_e _n_o_m_b_r_e _d_e _b_l_o_c_s _q_u_e _c_o_m_p_t_e _l_a _p_a_r_t_i_t_i_o_n _d_e
    _s_w_a_p


      mkswap /dev/hda8 XXXXX
      swapon -av




 Ajoutez une ligne destin�e � cette partiton de swap dans le fichier
 /etc/fstab

 5.  Si les programmes init et shutdown employ�s utilisent /etc/brc
    ajouter � ce fichier les lignes suivantes :


      swapoff -av
      zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100




 Dans le cas contraire il vous faudra invoquer ces commandes avant
 chaque fin de session Linux (placer ces commandes dans un script...)

 Note : dd ne traite que 100 blocs car j'ai empiriquement d�termin� que
 rien ne sert d'en �crire davantage !

 >>  Quels sont les avantages et inconv�nients de cette m�thode ?

 Avantages : gain d'espace disponible sur le disque !

 Inconv�nients : si l'�tape de restauration du fichier d'�change
 Windows n'est pas automatique il ne faudra pas n�gliger, sous Linux et
 avant chaque red�marrage "vers" Windows, de lancer les commandes
 charg�es de cette remise en place.



 33..22..  RR��ccuupp��rraattiioonn ddee ffiicchhiieerrss eeffffaacc��ss.. MMiicchhaaeell HHaammiillttoonn,,
 mmiicchhaaeell@@aaccttrriixx..ggeenn..nnzz ..

 Voici une astuce dont j'ai eu besoin � quelques reprises.

 La r�cup�ration d'un fichier texte par une personne d�sesp�r�e.

 Si vous effacez un fichier texte par accident, par exemple un courrier
 �lectronique ou le produit d'une nuit de programmation, tout n'est pas
 perdu. Si le fichier a eu le temps d'aller jusqu'au disque, c'est �
 dire s'il a exist� pendant plus de 30 secondes, il est possible que
 son contenu se trouve encore sur la partition.

 Vous pouvez le rechercher dans la partition en utilisant la commande
 grep.

 Par exemple, r�cemment, j'ai effac� un courrier �lectronique par
 accident. J'ai imm�diatement cess� toute activit� qui aurait pu
 modifier le contenu de la partition : je me suis abstenu de
 sauvegarder quoi que ce soit, de compiler quoi que ce soit, etc. En
 d'autres occasions, je suis all� jusqu'� passer le syst�me en mode
 mono-utilisateur et d�monter le syst�me de fichiers.

 J'ai ensuite utilis� la commande egrep sur la partition : dans mon
 cas, le message se trouvait dans /usr/local/home/michael/, et donc
 d'apr�s la sortie de df, dans /dev/hdb5.



         sputnik3:~ % df
         Filesystem         1024-blocks  Used Available Capacity Mounted on
         /dev/hda3              18621    9759     7901     55%   /
         /dev/hdb3             308852  258443    34458     88%   /usr
         /dev/hdb5             466896  407062    35720     92%   /usr/local

         sputnik3:~ % su
         Password:
         [michael@sputnik3 michael]# egrep -50 'ftp.+COL' /dev/hdb5 > /tmp/x

 Je suis extr�mement prudent quand je manipule des partitions, donc
 j'ai bien pris le temps de m'assurer que je comprenais la syntaxe de
 cette commande AVANT de presser la touche Entr�e. Dans ce cas, le
 message contenait la mot "ftp", puis un peu de texte suivi du mot
 "COL". Le message faisait une vingtaine de lignes, donc j'ai utilis�
 -50 pour avoir toutes les lignes assez proches de la phrase. Il m'est
 d�j� arriv� d'utiliser -3000 pour �tre s�r de r�perer toutes les
 lignes d'un code source. J'ai redirig� le sortie de egrep vers une
 autre partition pour �viter d'�craser le message que je recherchais.

 J'ai ensuite utilis� la commande strings pour examiner le r�sultat.



        strings /tmp/x | less




 Effectivement, le message �tait l�.

 Cette m�thode peut ne pas �tre efficace si tout ou partie de l'espace
 disque a d�j� �t� r�utilis�.

 Cette astuce n'est probablement utilisable que sur un syst�me mono-
 utilisateur. Sur un syst�me multi-utilisateurs avec beaucoup
 d'activit� sur les disques, l'emplacement que vous avez lib�r� peut
 tr�s bien d�j� avoir �t� r�utilis�. Et pour la plupart nous ne pouvons
 pas nous permettre d'enlever la machine de sous les pieds de nos
 utilisateurs d�s que nous avons besoin de r�cup�rer un fichier.

 Sur mon syst�me personnel, cette astuce a �t� bien pratique � environ
 trois occasions ces quelques derni�res ann�es - g�n�ralement apr�s que
 j'ai d�truit accidentellement une partie de mon travail du jour. Si ce
 que je fais survit assez longtemps pour progresser de fa�on
 significative, je le sauvegarde sur une disquette, donc je n'ai pas
 souvent besoin de ce truc.



 33..33..  DDeennnniiss,,  jjaaddeessttaarr@@rraahhuull..nneett ..  CCoommmmeenntt uuttiilliisseerr llee mmaarrqquueeuurr
 dd''iimmmmuuttaabbiilliitt��.. JJiimm

 Utilisez le marqueur d'immutabilit�.

 Juste apr�s avoir install� et configur� votre syst�me, faites un tour
 dans /bin, /sbin, /usr/bin, /usr/sbin, /usr/lib et autres, et
 n'h�sitez pas � vous servir de la commande "chattr +i". Appliquez-la
 aussi aux fichiers du noyau � la racine. Maintenant, "mkdir
 /etc/.dist" et copiez-y toute l'arborescence contenue dans /etc (je le
 fais en deux �tapes en utilisant /tmp/etcdist.tar pour �viter la
 r�cursion). (Vous pouvez aussi vous contenter de /etc/.dist.tar.gz).
 Et placez-y un marqueur d'immutabilit�.

 Tout cela sert � limiter les d�g�ts que vous pouvez faire en tant que
 root. Vous �viterez ainsi d'�craser des fichiers avec une redirection
 mal contr�l�e, et vous ne risquez pas de rendre le syst�me
 inutilisable � cause d'une espace mal plac�e dans une commande "rm
 -fr" ; vous pouvez toujours faire tr�s mal � vos donn�es, mais vos
 binaires et vos biblioth�ques seront � l'abri.

 De plus, cela pr�vient, ou du moins complique, l'exploitation d'un
 certain nombre de trous de s�curit� ; en effet, beaucoup d'attaques de
 ce type �crasent un fichier au moyen d'un quelconque programme SUID
 qui _n_e _p_e_r_m_e_t _p_a_s _d_'_e_x_�_c_u_t_e_r _u_n_e _c_o_m_m_a_n_d_e _a_r_b_i_t_r_a_i_r_e.

 Le seul inconv�nient se pr�sente � l'installation de divers logiciels
 syst�me. D'un autre c�t�, �a emp�che l'�crasement accidentel de
 fichiers par "make install". Si vous oubliez de lire le Makefile et
 d'appliquer chattr -i aux fichiers qui doivent �tre �cras�s (et aux
 r�pertoires auxquels vous voulez ajouter des fichiers), le make
 �choue, et il suffit d'utiliser chattr avant de le relancer. Vous
 pouvez aussi en profiter pour d�placer vos anciens binaires,
 biblioth�ques et autres dans un r�pertoire .old/, les renommer, les
 archiver ou autre.



 33..44..  qquuee vvoouuss rraajjoouutteezz..  UUnnee ssuuggggeessttiioonn qquuaanntt �� ll''eennddrrooiitt oo�� mmeettttrree
 ccee

 Tout ce que vous rajoutez doit se trouver sous /usr/local ou
 /usr/local/`hostname`!

 Si votre distribution laisse /usr/local vide, cr�ez /usr/local/src,
 /usr/local/bin, etc. et utilisez-les. Si votre distribution met des
 choses dans /usr/local, cr�ez /usr/local/`hostname` et donnez-lui le
 mode +w pour le groupe wheel (en plus, je le rends SUID et SGID pour
 m'assurer que les membres du groupe wheel ne peuvent toucher qu'�
 leurs propres fichiers et que tous les nouveaux fichiers vont
 appartenir au groupe wheel).

 Maintenant, forcez-vous � _T_O_U_J_O_U_R_S placer les nouveaux paquetages sous
 /usr/local/src/.from/$OU_JE_L_AI_EU (pour les fichiers .tar ou autres)
 et � les compiler sous /usr/local/src (ou .../$HOSTNAME/src). Assurez-
 vous qu'ils s'installent sous la hi�rarchie locale. Si quelque chose
 *doit obligatoirement* �tre install� dans /bin ou /usr/bin ou autre,
 cr�ez un lien symbolique depuis la hi�rarchie locale vers tout ce qui
 est install� ailleurs.

 La raison de tout �a, m�me si �a repr�sente plus de travail, est que
 �a permet de trouver facilement ce qui doit �tre sauvegard� et
 r�install� en cas de r�installation compl�te depuis le m�dia de
 distribution (habituellement un CD � l'heure actuelle). En utilisant
 un r�pertoire /usr/local/src/.from, vous gardez aussi une trace de la
 provenance de vos sources, ce qui est utile pour trouver les mises �
 jour et qui peut s'av�rer critique pour suivre les listes d'annonces
 de s�curit�.

 Un de mes syst�mes personnels (celui que j'utilise) a �t� mont� avant
 que je n'applique moi-m�me cette politique. Je ne "sais" toujours pas
 en quoi il diff�re du syst�me de base "tel qu'install�". Et cela bien
 que je n'ai chang� que tr�s peu de choses quant � sa configuration et
 que je suis le *seul* � l'utiliser.

 A contrario, tous les syst�mes que j'ai mis en place au travail (o�
 j'ai �t� bombard� administrateur syst�me) ont �t� configur�s de cette
 fa�on. Ils ont �t� administr�s par plusieurs personnes ext�rieures et
 autres membres du d�partement informatique, et ils ont subi de
 nombreuses mises � jour et installations de logiciels. Pourtant, j'ai
 une id�e tr�s pr�cise de ce qui a �t� rajout� *apr�s* l'installation
 et la configuration initiales.



 33..55..  mmiinnuussccuulleess.. JJuussttiinn DDoosssseeyy,,  ddoosssseeyy@@oouu..eedduu ..  CCoonnvveerrssiioonn ddee ttoouuss
 lleess ffiicchhiieerrss dd''uunn rr��ppeerrttooiirree eenn

 J'ai remarqu� quelques proc�dures difficiles ou superflues
 recommand�es dans les trucs et astuces du num�ro 12  (-- NdT :
 Apparemment, cette section est tir�e de la Linux Gazette--) . Comme il
 y en a plusieurs, je vous adresse ce message.
      ______________________________________________________________________
      #!/bin/sh
               # lowerit
               # convertit les noms de tous les fichiers du r�pertoire
               # courant en minuscules
               # n'affecte que les fichiers, pas les sous-r�pertoires
               # demande confirmation avant d'�craser un fichier existant
               for x in `ls`
                 do
                 if [ ! -f $x ]; then
                   continue
                   fi
                 lc=`echo $x  | tr '[A-Z]' '[a-z]'`
                 if [ $lc != $x ]; then
                   mv -i $x $lc
                 fi
                 done
      ______________________________________________________________________




 Voil� un long script. Je n'�crirais pas un script pour �a ;
 j'utiliserais plut�t la commande suivante :



      for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`;
      done;




 Ce contributeur dit qu'il a �crit le script de cette fa�on pour des
 raisons de lisibilit� (voir plus bas).

 Pour l'astuce suivante, qui traite de l'ajout et de la suppression
 d'utilisateurs, Geoff s'en sort bien jusqu'� la derni�re �tape.
 Rebooter ? J'esp�re qu'il ne reboote pas � chaque fois qu'il supprime
 un utilisateur. Les deux premi�res �tapes suffisent. De toutes fa�ons,
 quels processus cet utilisateur pourrait-il laisser tourner ? Un bot
 IRC ? Tuez simplement les processus avec :



      kill -9 `ps -aux |grep ^<nom d'utilisateur> |tr -s " " |cut -d " " -f2`




 Par exemple, pour l'utilisateur foo:



      kill -9 `ps -aux |grep ^foo |tr -s " " |cut -d " " -f2`




 Cette question �tant class�e, passons au mot de passe de root oubli�.

 La solution donn�e dans la Gazette est la plus universelle, mais pas
 la plus facile. Aussi bien avec LILO qu'avec Loadlin, le param�tre
 "single" permet de lancer directement le shell par d�faut au
 d�marrage, sans entrer de login ni de mot de passe. � partir de l�, il
 suffit de changer ou d'enlever le mot de passe probl�matique, avant de
 taper "init 3" pour passer en mode multi-utilisateurs. De cette fa�on,
 un seul reboot ; de l'autre, deux reboots.

 Justin Dossey.



 33..66..  ppaauull@@ggeeeekkyy11..eebbtteecchh..nneett MMiissee �� jjoouurr ddee SSeennddmmaaiill.. PPaauull AAnnddeerrssoonn,,

 Nous partons d'une source propre. Commencez par vous procurer le code
 source de sendmail. J'ai t�l�charg� la version 8.9.0, qui est comme
 vous pouvez le voir � la pointe du progr�s. Je l'ai r�cup�r�e depuis
 ftp.sendmail.org:/pub/sendmail/sendmail-8.9.0.tar.gz

 Il p�se � peu pr�s un m�ga-octet, et sachant que j'utilise la version
 8.7.6, je crois que �a vaut le co�t. Si �a marche, vous en entendrez
 s�rement parler ; sinon, je n'aurai plus de courrier et je ne pourrai
 pas distribuer la nouvelle version de ce HOWTO :)

 Maintenant que vous avez t�l�charg� le source, d�compactez-le. Cela va
 cr�er un sous-r�pertoire sendmail-8.9.0 dans le r�pertoire courant.
 Placez-vous dans ce sous-r�pertoire et lisez les fichiers README et
 RELEASE_NOTES (et soyez �poustoufl� par toutes les am�liorations
 qu'ils ont apport�es). Maintenant, placez-vous dans src. C'est l� que
 vous allez faire le plus gros du travail.

 _U_n_e _r_e_m_a_r_q_u_e _a_u _p_a_s_s_a_g_e _: _S_e_n_d_m_a_i_l _e_s_t _u_n _p_r_o_g_r_a_m_m_e _p_e_t_i_t_, _p_u_i_s_s_a_n_t _e_t
 _b_i_e_n _�_c_r_i_t_. _L_e _b_i_n_a_i_r_e sendmail lui-m�me a mis moins de 5 minutes �
 compiler sur mon 5x86 133 avec 32 Mo de RAM ! La totalit� de la
 compilation et de l'installation (sans compter la configuration) ont
 pris moins de 15 minutes !

 Je n'utilise pas BIND sur mon syst�me, donc j'ai cherch� les lignes
 suivantes :



      ______________________________________________________________________
      # ifndef NAMED_BIND
      #  define NAMED_BIND    1       /* use Berkeley Internet Domain Server */
      # endif
      ______________________________________________________________________




 et j'ai remplac� le 1 par un 0:



      ______________________________________________________________________
      # ifndef NAMED_BIND
      #  define NAMED_BIND    0       /* use Berkeley Internet Domain Server */
      # endif
      ______________________________________________________________________




 Sur la Debian 1.3, db.h est install� par d�faut dans /usr/include/db,
 au lieu de /usr/include o� sendmail esp�re le trouver. Placez-vous
 successivement dans les sous-r�pertoires src, mailstats, makemap,
 praliases, rmail et smrsh et �xecutez la commande suivante :



  ./Build -I/usr/include/db




 Ensuite, cd .. et tapez make install. Voil� ! La version 8.9.0 de
 Sendmail doit maintenant �tre install�e !  Bien s�r, �a suppose que
 vous avez d�j� votre configuration d'origine. Pour que tout marche
 bien sur mon syst�me, comme j'h�berge des listes de diffusion
 gratuites utilisant majordomo, j'ai ajout� la ligne suivante au d�but
 de mon /etc/sendmail.cf :



      ______________________________________________________________________
      O DontBlameSendmail=forwardfileinunsafedirpath, forwardfileinunsafedirpathsafe
      ______________________________________________________________________




 Sendmail 8.9.0 est � l'heure actuelle plut�t bavard � propos des
 permissions des r�pertoires et des fichiers, et il va se plaindre �
 propos des r�pertoires et des fichiers qui autorisent l'acc�s en
 �criture pour le groupe ou pour tout le monde parmi les fichiers
 d'alias ou .forward. Bien qu'il ne soit pas recommand� d'inhiber ces
 avertissements, je suis toujours seul � la console et j'ai trouv� que
 ce trou de s�curit� mineur n'�tait en fait pas g�nant. C'est vous qui
 voyez.



 33..77..  dd��bbuuttaannttss.. JJiimm DDeennnniiss,,  jjaaddeessttaarr@@rraahhuull..nneett QQuueellqquueess aassttuucceess ppoouurr
 lleess aaddmmiinniissttrraatteeuurrss ssyysstt��mmee

 Cr�ez et tenez � jour un fichier /README.`hostname` ou
 /etc/README.`hostname` _[ _o_u _�_v_e_n_t_u_e_l_l_e_m_e_n_t
 /usr/local/etc/README.`hostname` - le r�dacteur ]

 Absolument, � compter du _p_r_e_m_i_e_r _j_o_u_r de l'administration d'un
 syst�me, prenez des notes dans un fichier journal. Vous pouvez mettre
 "vi /README.$(hostname)" sur une ligne du fichier .bash_logout de
 root. Une autre fa�on de faire est d'�crire un script su ou sudo qui
 fait quelque chose comme �a :



                      function exit \
                              { unset exit; exit; \
                                cat ~/tmp/session.$(date +%y%m%d) \
                                >> /README.$(hostname) && \
                                vi /README.$(hostname)
                                }
                      script -a ~/tmp/session.$(date +%y%m%d)
                      /bin/su.org -




 (utilise la commande tap�e pour cr�er une trace de la session et cr�e
 une fonction pour automatiser la mise � jour du fichier journal).

 J'admets que je n'ai pas implant� cette automatisation - jusqu'�
 maintenant je me suis repos� sur ma discipline. Cependant j'ai
 envisag� l'id�e (au point d'�crire les scripts et les fonctions que
 vous avez sous les yeux). Une chose qui me retient est la commande
 "script" elle-m�me. Je pense qu'il va falloir que je me procure les
 sources et que je rajoute une paire de param�tres (pour arr�ter
 l'enregistrement du script depuis la ligne de commandes) avant de me
 mettre � utiliser �a.

 Ma derni�re suggestion (pour cette fois) :

 La variable PATH de root devrait contenir PATH=~/bin.

 C'est tout. Rien d'autre dans le PATH de root. Tout ce que root peut
 faire est fourni par un lien symbolique dans ~/bin, un alias, une
 fonction shell, un script ou un binaire situ� dans ~/bin, ou bien la
 commande est tap�e avec un chemin d'acc�s explicite.

 De cette fa�on, toute personne utilisant le compte root se rend compte
 (parfois douloureusement) � quel point elle fait confiance aux
 binaires. L'administrateur avis� d'un syst�me multi-utilisateurs va en
 plus parcourir r�guli�rement son r�pertoire ~/bin et ses fichiers
 ~/.*history pour y chercher des r�p�titions et des moyens de les
 contourner.

 L'administrateur vraiment motiv� va rep�rer les encha�nements qui
 peuvent �tre automatis�s, les endroits o� des v�rifications peuvent
 �tre ajout�es, et les t�ches pour lesquelles les privil�ges de root
 peuvent �tre abandonn�es (comme lancer un �diteur, un agent de
 transport de courrier �lectronique ou autre gros programme pouvant
 ex�cuter des scripts qui *pourraient* �tre inclus dans des fichiers de
 donn�es - comme vi (./.exrc) ou emacs (./.emacs) ou m�me, plus
 insidieux, $EXINIT et les macros contenues au d�but ou � la fin des
 documents). Bien s�r, les commandes de ce genre peuvent �tre lanc�es
 avec quelque chose comme �a :



                      cp $donn�es $r�pertoire_utilisateur/tmp
                      su -c $commande_d_origine $param�tres
                      cp $r�pertoire_utilisateur/tmp $donn�es




 (... o� les d�tails d�pendent de la commande).

 Ces derni�res pr�cautions sont pour la plupart superflues pour la
 machine personnelle ou la station "mono-utilisateur". Mais elles
 repr�sentent une tr�s bonne mani�re d'administrer un gros syst�me
 multi-utilisateurs, particuli�rement dans le cas d'un acc�s public
 (comme les machines de netcom).



 33..88..  CCoommmmeenntt ccoonnffiigguurreerr xxddmm  ppoouurr qquu''iill ppeerrmmeettttee ddee cchhooiissiirr llee
 ssyysstt��mmee hh��ttee ?? AArrrriiggoo TTrriiuullzzii,,  aa..ttrriiuullzzii@@iicc..aacc..uukk ..


 1. Modifier le  fichier lan�ant xdm lors du d�marrage (probablement
    nomm� /etc/rc/rc.6 ou /etc/rc.local) de fa�on que la section de xdm
    contienne :


      /usr/bin/X11/xdm
      exec /usr/bin/X11/X -indirect hostname




 2. Modifier le fichier /usr/lib/X11/xdm/Xservers et commenter la ligne
    invoquant le serveur sur la machine locale (commence par "0:")

 3. Relancer le syst�me... tout doit fonctionner !

 J'ajoute cette section apr�s avoir su� une semaine durant sur ce
 probl�me !

 Attention : certaines anciennes versions de la distribution SLS
 (1.1.1) exigent qu'un param�tre "-nodaemon" accompagne l'invocation
 d'xdm.  Les version ult�rieures ne pr�sentent PPAASS cette
 caract�ristique.