/usr/share/doc/HOWTO/fr-html/Tips-HOWTO.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Astuces Linux HOWTO</title>
</head>
<body>
<h1>Astuces Linux HOWTO</h1>
<h2><a href="mailto:paul@geeky1.ebtech.net">Paul Anderson</a>,
traduit par <a href="mailto:gomesdv@mail.dotcom.fr">Arnaud
Gomes-do-Vale</a> et <a href="mailto:nat@nataa.fr.eu.org">Nat
Makarévitch</a></h2>
v3.6, Juin 1998 traduction du 2 janvier 1999
<hr>
<em>Ce document contient ces astuces et réglages difficiles
à trouver qui rendent Linux un peu plus sympathique.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Ce document est le <b>Linux Astuces HOWTO</b> (titre
original : <b>Linux Tips HOWTO</b>), 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.</p>
<p>Paul Anderson <em>Rédacteur de "Linux TIPS
HOWTO"</em></p>
<p><code>panderso@ebtech.net</code></p>
<h2><a name="s2">2. Astuces simples</a></h2>
<h2><a name="ss2.1">2.1 Un truc pratique pour syslog. <em>Paul
Anderson, rédacteur du Linux Astuces HOWTO</em>.</a></h2>
<p>Editez le ficher <code>/etc/syslog.conf</code> et ajoutez-y la
ligne suivante :</p>
<blockquote>
<pre>
<code># Tout envoyer sur tty8
*.* /dev/tty8
</code>
</pre></blockquote>
<p>Attention : PENSEZ À UTILISER DES TABULATIONS !
Syslog n'aime pas les espaces.</p>
<h2><a name="ss2.2">2.2 Un script pour afficher les HOWTO
compactés. <em>Didier Juges,</em>
<code>dj@destin.nfds.net</code>.</a></h2>
<p>De débutant à débutant, voici un petit
script qui facilite la lectures des howto. Mes howto sont dans
<code>/usr/doc/faq/howto/</code> et sont compressés avec
<code>gzip</code>. Les fichiers s'appellent
<code>XXX-HOWTO.gz</code>, où XXX est le titre. J'ai
appelé le script suivant <code>howto</code> et je l'ai
placé dans <code>/usr/local/sbin/</code> :</p>
<blockquote>
<hr>
<pre>
<code>#!/bin/sh
if [ "$1" = "" ]; then
ls /usr/doc/faq/howto | less
else
gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi
</code>
</pre>
<hr></blockquote>
<p>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.</p>
<p>Par exemple, pour afficher le document
<code>Serial-HOWTO.gz</code>, tapez :</p>
<blockquote>
<pre>
<code>$ howto serial
</code>
</pre></blockquote>
<h2><a name="ss2.3">2.3 Reste-t-il assez de place libre ?
<em>Hans Zoebelein,</em></a>
<code>zocki@goldfish.cube.net</code>.</h2>
<p>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...)</p>
<p>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.</p>
<blockquote>
<hr>
<pre>
<code>#!/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 à zocki@goldfish.cube.net.
# 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
</code>
</pre>
<hr></blockquote>
<h2><a name="ss2.4">2.4 Un utilitaire pour nettoyer vos fichiers
journaux (logs). <em>Paul Anderson, rédacteur du Linux
Astuces HOWTO</em>.</a></h2>
<p>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
<code>chklogs</code>. <code>chklogs</code> a été
écrit par Emilio Grimaldo,
<code>grimaldo@panama.iaehv.nl</code>, et la version 1.8 actuelle
est disponible sur
<code>ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz</code>.
C'est très simple à installer (il faut bien sûr
lire le contenu du répertoire <code>doc</code>). Une fois le
paquetage installé, rajoutez une entrée à
votre crontab :</p>
<blockquote>
<pre>
<code># Lance chklogs tous les jours à 21h
00 21 * * * /usr/local/sbin/chklogs -m
</code>
</pre></blockquote>
<p>Pendant que vous y êtes, n'oubliez pas de dire à
l'auteur à quel point vous appréciez son logiciel
:)</p>
<h2><a name="ss2.5">2.5 Un script pratique pour nettoyer les
fichiers <code>core</code>. <em>Otto Hammersmith</em>.</a></h2>
<p>Créez un fichier <code>rmcores</code> (l'auteur l'appelle
<code>handle-cores</code>) contenant ceci :</p>
<blockquote>
<hr>
<pre>
<code>#!/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
</code>
</pre>
<hr></blockquote>
<p>Et utilisez cron pour le lancer à intervalles
réguliers.</p>
<h2><a name="ss2.6">2.6 Déplacement de répertoires
inter partitions Linux (filesystems). <i>Alan Cox,</i>
<code>A.Cox@swansea.ac.uk</code>.</a></h2>
<blockquote>
<pre>
<code>(cd /répertoire_source && tar cf - . ) | (cd /répertoire_cible && tar xvf -)
</code>
</pre></blockquote>
<p><i>[ Et pas cd /répertoire_source; tar...etc., qui laisse
la possibilité de bousiller un répertoire en cas de
problème. Merci à Jim Dennis,
<code>jim@starshine.org</code>, qui me l'a signalé. -le
rédacteur ]</i></p>
<h2><a name="ss2.7">2.7 Trouver les plus gros répertoires.
<em>Mick Ghazey</em>.</a></h2>
<p>Vous vous êtes déjà demandé quels
étaient les plus gros répertoires sur votre
machine ? Voici une façon de les trouver.</p>
<blockquote>
<pre>
<code>du -S | sort -n
</code>
</pre></blockquote>
<h2><a name="ss2.8">2.8 La Linux Gazette.</a></h2>
<p>Bravo et merci à John Fisk, le créateur de la
Linux Gazette. C'est un excellent magazine en ligne, qui plus est
<b>GRATUIT !</b> Que demander de plus ? Vous pouvez le
trouver à l'adresse :</p>
<blockquote>
<pre>
<code>http://www.linuxgazette.com
</code>
</pre></blockquote>
<p>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.</p>
<h2><a name="ss2.9">2.9 Indication permettant de résoudre le
problème posé par le VPATH du GNU make version 3.7.
<i>Ted Stern,</i> <code>stern@amath.washington.edu</code>.</a></h2>
<p>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
<code><psmith@wellfleet.com></code></p>
<blockquote>Veuillez rédiger votre courrier en anglais !
NDT</blockquote>
. 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 !
<h2><a name="ss2.10">2.10 Comment interdire à ma machine de
lancer fsck après chaque démarrage ? <i>Dale
Lutz,</i> <code>dal@wimsey.com</code>.</a></h2>
<p>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 :</p>
<blockquote>
<pre>
<code>rdev -R /zImage 1
</code>
</pre></blockquote>
Cela modifie le noyau qui, dès lors, considère que le
système de fichiers est sain.
<p>Note : Ajoutez, si vous employez LILO,
<code>read-only</code> à la section de l'image de boot de
votre fichier de configuration LILO (souvent nommé
/etc/lilo/config ou /etc/lilo.conf).</p>
<h2><a name="ss2.11">2.11 Comment éviter les lancements de
fsck, au boot, dûs au "device busy" ? <i>Jon Tombs,</i>
<code>jon@gtex02.us.es</code>.</a></h2>
<p>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
<code>fsck</code>, veuillez suivre les recommandations suivantes
:</p>
<p>Ajoutez, au fichier <code>/etc/rc.d/init.d/halt</code> ou
<code>/etc/rc.d/rc.0</code>, la ligne</p>
<blockquote>
<pre>
<code>mount -o remount,ro /mount.dir
</code>
</pre></blockquote>
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 !
<h2><a name="ss2.12">2.12 Comment trouver les plus gros fichiers
sur votre disque dur. <i>Simon Amor,</i>
<code>simon@foobar.co.uk</code>.</a></h2>
<blockquote>
<pre>
<code>ls -l | sort +4n
</code>
</pre></blockquote>
<p>Pour ceux d'entre vous qui sont vraiment à
l'étroit, ça prend du temps, mais ça marche
bien :</p>
<blockquote>
<pre>
<code>cd /
ls -lR | sort +4n
</code>
</pre></blockquote>
<h2><a name="ss2.13">2.13 Comment imprimer sur des pages avec
marges ? <i>Mike Dickey,</i>
<code>mdickey@thorplus.lib.purdue.edu</code>.</a></h2>
<blockquote>
<hr>
<pre>
<code> #!/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
</code>
</pre>
<hr></blockquote>
<h2><a name="ss2.14">2.14 Méthode permettant de rechercher
des expressions rationnelles dans des fichiers. <i>Raul Deluth
Miller,</i> <code>rockwell@nova.umd.edu</code>.</a></h2>
<p>Je désigne, par "expressions rationnelles", les
<code>regexp</code> de "grep" et consorts.</p>
<p>J'ai appelé ce script "forall" et l'utilise ainsi :</p>
<blockquote>
<pre>
<code>forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
</code>
</pre></blockquote>
Voici le script forall:
<blockquote>
<hr>
<pre>
<code>#!/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 "$@"
</code>
</pre>
<hr></blockquote>
<h2><a name="ss2.15">2.15 Un script pour faire le ménage
derrière les programmes qui créent des fichiers de
sauvegarde.</a></h2>
<p>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".</p>
<blockquote>
<hr>
<pre>
<code>#!/bin/sh
#SQUEEZE efface les fichiers superflus et compacte les fichiers .tex
#et README.
#Par Barry tolnas, tolnas@sun1.engr.utk.edu
#
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 {} \;
</code>
</pre>
<hr></blockquote>
<h2><a name="ss2.16">2.16 Comment trouver le processus qui occupe
le plus de mémoire. <em>Simon Amor</em>.</a></h2>
<blockquote>
<pre>
<code>ps -aux | sort +4n
</code>
</pre></blockquote>
-OU-
<blockquote>
<pre>
<code>ps -aux | sort +5n
</code>
</pre></blockquote>
<h2><a name="ss2.17">2.17 Configuration de <code>vi</code> pour la
programmation en C. <em>Paul Anderson, rédacteur du Linux
Astuces HOWTO</em>.</a></h2>
<p>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 <code>.exrc</code> :</p>
<blockquote>
<hr>
<pre>
<code>set autoindent
set shiftwidth=4
set backspace=2
set ruler
</code>
</pre>
<hr></blockquote>
<p>Qu'est-ce que ça fait ? <code>autoindent</code>
force vi à indenter automatiquement toutes les lignes qui
suivent la première ligne indentée,
<code>shiftwidth</code> impose une taille de 4 espaces pour ^T,
<code>backspace</code> configure la touche d'espacement
arrière, et <code>ruler</code> 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 :</p>
<blockquote>
<pre>
<code>vi +20 monfichier.c
</code>
</pre></blockquote>
<h2><a name="ss2.18">2.18 Utilisation de ctags pour faciliter la
programmation</a></h2>
<p>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é <code>tags</code> 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 <code>tags</code>
ressemble à ça :</p>
<blockquote>
<hr>
<pre>
<code>
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)$/
</code>
</pre>
<hr></blockquote>
<p>Pour éditer, par exemple, AddEndResize() avec vim,
tapez :</p>
<blockquote>
<pre>
<code>vim -t AddEndResize
</code>
</pre></blockquote>
<p>Cela va ouvrir le bon fichier dans l'éditeur et placer le
curseur au début de la fonction.</p>
<h2><a name="ss2.19">2.19 Pourquoi sendmail se bloque-t-il pendant
5 minutes au démarrage d'une Red Hat ? <em>Paul
Anderson</em>.</a></h2>
<p>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
<code>/etc/hosts</code>, vous allez trouver quelque chose qui
ressemble à ça :</p>
<blockquote>
<pre>
<code>127.0.0.1 localhost votremachine
</code>
</pre></blockquote>
<p>Quand sendmail démarre, il fait une recherche sur le nom
de votre machive (<code>votremachine</code> 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 <code>/etc/hosts</code> et mettez-y
quelque chose comme ça :</p>
<blockquote>
<pre>
<code>127.0.0.1 localhost
10.56.142.1 votremachine
</code>
</pre></blockquote>
<h2><a name="ss2.20">2.20 Comment configurer une Red Hat pour avoir
<code>ls</code> en couleurs? <em>Paul Anderson,</em>
<code>paul@geeky1.ebtech.net</code>.</a></h2>
<p>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.</p>
<p>Commencez par taper <code>eval `DIRCOLORS`</code></p>
<p>Puis <code>alias ls='ls --color=auto'</code></p>
<p>Enfin, mettez la ligne "<code>alias .....</code>" dans votre
<code>/etc/bashrc</code>.</p>
<h2><a name="ss2.21">2.21 Comment trouver quelle
bibliothèque de /usr/lib contient une fonction
donnée ? <em>Pawel Veselow</em>.</a></h2>
<p>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 :</p>
<blockquote>
<pre>
<code>for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
</code>
</pre></blockquote>
<p>Remplacez <code>tgetnum</code> par le nom de la fonction que
vous cherchez.</p>
<h2><a name="ss2.22">2.22 J'ai compilé un petit programme en
C, mais quand je le lance, je ne vois aucun
résultat !</a></h2>
<p>Vous avez compilé le programme et créé un
programme appelé <code>test</code>, non? Linux a
déjà un programme <code>test</code>, qui teste si une
certaine condition est vraie et qui n'affiche aucun résultat
à l'écran. Pour lancer votre programme
<code>test</code>, tapez <code>./test</code>.</p>
<h2><a name="s3">3. Astuces détaillées</a></h2>
<h2><a name="ss3.1">3.1 Linux et Windows peuvent utiliser une
même partition pour le swap ! <i>Tony Acero,</i>
<code>ace3@midway.uchicago.edu</code>.</a></h2>
<ol>
<li>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.</li>
<li>Démarrer Linux et sauver ce fichier dans un fichier.
Exemple (cas d'une partition de "swap" commun nommée
/dev/hda8) :
<blockquote>
<pre>
<code>dd if=/dev/hda8 of=/etc/dosswap
</code>
</pre></blockquote>
</li>
<li>Compacter le fichier de swap :
<blockquote>
<pre>
<code>gzip -9 /etc/dosswap
</code>
</pre></blockquote>
</li>
<li>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 : <em>XXXXX représente ici le
nombre de blocs que compte la partition de swap</em>
<blockquote>
<pre>
<code>mkswap /dev/hda8 XXXXX
swapon -av
</code>
</pre></blockquote>
Ajoutez une ligne destinée à cette partiton de swap
dans le fichier /etc/fstab</li>
<li>Si les programmes init et shutdown employés utilisent
/etc/brc ajouter à ce fichier les lignes suivantes :
<blockquote>
<pre>
<code>swapoff -av
zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100
</code>
</pre></blockquote>
Dans le cas contraire il vous faudra invoquer ces commandes avant
chaque fin de session Linux (placer ces commandes dans un
script...)</li>
</ol>
Note : dd ne traite que 100 blocs car j'ai empiriquement
déterminé que rien ne sert d'en écrire
davantage !
<p>>> Quels sont les avantages et inconvénients de
cette méthode ?</p>
<p>Avantages : gain d'espace disponible sur le disque !</p>
<p>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.</p>
<h2><a name="ss3.2">3.2 Récupération de fichiers
effacés. <em>Michael Hamilton,</em>
<code>michael@actrix.gen.nz</code>.</a></h2>
<p>Voici une astuce dont j'ai eu besoin à quelques
reprises.</p>
<p>La récupération d'un fichier texte par une
personne désespérée.</p>
<p>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.</p>
<p>Vous pouvez le rechercher dans la partition en utilisant la
commande grep.</p>
<p>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.</p>
<p>J'ai ensuite utilisé la commande egrep sur la
partition : dans mon cas, le message se trouvait dans
<code>/usr/local/home/michael/</code>, et donc d'après la
sortie de df, dans <code>/dev/hdb5</code>.</p>
<blockquote>
<pre>
<code> 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
</code>
</pre></blockquote>
<p>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.</p>
<p>J'ai ensuite utilisé la commande strings pour examiner le
résultat.</p>
<blockquote>
<pre>
<code> strings /tmp/x | less
</code>
</pre></blockquote>
<p>Effectivement, le message était là.</p>
<p>Cette méthode peut ne pas être efficace si tout ou
partie de l'espace disque a déjà été
réutilisé.</p>
<p>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.</p>
<p>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.</p>
<h2><a name="ss3.3">3.3 Comment utiliser le marqueur
d'immutabilité. <em>Jim Dennis,</em>
<code>jadestar@rahul.net</code>.</a></h2>
<p>Utilisez le marqueur d'immutabilité.</p>
<p>Juste après avoir installé et configuré
votre système, faites un tour dans <code>/bin</code>,
<code>/sbin</code>, <code>/usr/bin</code>, <code>/usr/sbin</code>,
<code>/usr/lib</code> et autres, et n'hésitez pas à
vous servir de la commande "<code>chattr +i</code>". Appliquez-la
aussi aux fichiers du noyau à la racine. Maintenant,
"<code>mkdir /etc/.dist</code>" et copiez-y toute l'arborescence
contenue dans <code>/etc</code> (je le fais en deux étapes
en utilisant <code>/tmp/etcdist.tar</code> pour éviter la
récursion). (Vous pouvez aussi vous contenter de
<code>/etc/.dist.tar.gz</code>). Et placez-y un marqueur
d'immutabilité.</p>
<p>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 "<code>rm -fr</code>" ; vous
pouvez toujours faire très mal à vos données,
mais vos binaires et vos bibliothèques seront à
l'abri.</p>
<p>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 <em>ne permet pas d'exécuter une commande
arbitraire</em>.</p>
<p>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 "<code>make install</code>". Si vous
oubliez de lire le Makefile et d'appliquer <code>chattr -i</code>
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 <code>.old/</code>, les renommer, les archiver ou
autre.</p>
<h2><a name="ss3.4">3.4 Une suggestion quant à l'endroit
où mettre ce que vous rajoutez.</a></h2>
<p>Tout ce que vous rajoutez doit se trouver sous
<code>/usr/local</code> ou <code>/usr/local/`hostname`</code>!</p>
<p>Si votre distribution laisse <code>/usr/local</code> vide,
créez <code>/usr/local/src</code>,
<code>/usr/local/bin</code>, etc. et utilisez-les. Si votre
distribution met des choses dans <code>/usr/local</code>,
créez <code>/usr/local/`hostname`</code> 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).</p>
<p>Maintenant, forcez-vous à <em>TOUJOURS</em> placer les
nouveaux paquetages sous
<code>/usr/local/src/.from/$OU_JE_L_AI_EU</code> (pour les fichiers
.tar ou autres) et à les compiler sous
<code>/usr/local/src</code> (ou <code>.../$HOSTNAME/src</code>).
Assurez-vous qu'ils s'installent sous la hiérarchie locale.
Si quelque chose *doit obligatoirement* être installé
dans <code>/bin</code> ou <code>/usr/bin</code> ou autre,
créez un lien symbolique depuis la hiérarchie locale
vers tout ce qui est installé ailleurs.</p>
<p>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 <code>/usr/local/src/.from</code>, 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é.</p>
<p>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.</p>
<p>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.</p>
<h2><a name="ss3.5">3.5 Conversion de tous les fichiers d'un
répertoire en minuscules. <em>Justin Dossey,</em>
<code>dossey@ou.edu</code>.</a></h2>
<p>J'ai remarqué quelques procédures difficiles ou
superflues recommandées dans les trucs et astuces du
numéro 12</p>
<blockquote>NdT : Apparemment, cette section est tirée
de la Linux Gazette</blockquote>
. Comme il y en a plusieurs, je vous adresse ce message.
<blockquote>
<hr>
<pre>
<code>#!/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
</code>
</pre>
<hr></blockquote>
<p>Voilà un long script. Je n'écrirais pas un script
pour ça ; j'utiliserais plutôt la commande
suivante :</p>
<blockquote>
<pre>
<code>for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`;
done;
</code>
</pre></blockquote>
<p>Ce contributeur dit qu'il a écrit le script de cette
façon pour des raisons de lisibilité (voir plus
bas).</p>
<p>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 :</p>
<blockquote>
<pre>
<code>kill -9 `ps -aux |grep ^<nom d'utilisateur> |tr -s " " |cut -d " " -f2`
</code>
</pre></blockquote>
<p>Par exemple, pour l'utilisateur foo:</p>
<blockquote>
<pre>
<code>kill -9 `ps -aux |grep ^foo |tr -s " " |cut -d " " -f2`
</code>
</pre></blockquote>
<p>Cette question étant classée, passons au mot de
passe de root oublié.</p>
<p>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 "<code>init 3</code>" pour passer en mode
multi-utilisateurs. De cette façon, un seul reboot ; de
l'autre, deux reboots.</p>
<p>Justin Dossey.</p>
<h2><a name="ss3.6">3.6 Mise à jour de Sendmail. <em>Paul
Anderson,</em></a> <code>paul@geeky1.ebtech.net</code></h2>
<p>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</p>
<p>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 :)</p>
<p>Maintenant que vous avez téléchargé le
source, décompactez-le. Cela va créer un
sous-répertoire <code>sendmail-8.9.0</code> dans le
répertoire courant. Placez-vous dans ce
sous-répertoire et lisez les fichiers <code>README</code> et
<code>RELEASE_NOTES</code> (et soyez époustouflé par
toutes les améliorations qu'ils ont apportées).
Maintenant, placez-vous dans <code>src</code>. C'est là que
vous allez faire le plus gros du travail.</p>
<p><em>Une remarque au passage : Sendmail est un programme
petit, puissant et bien écrit. Le binaire
<code>sendmail</code> 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 !</em></p>
<p>Je n'utilise pas BIND sur mon système, donc j'ai
cherché les lignes suivantes :</p>
<blockquote>
<hr>
<pre>
<code># ifndef NAMED_BIND
# define NAMED_BIND 1 /* use Berkeley Internet Domain Server */
# endif
</code>
</pre>
<hr></blockquote>
<p>et j'ai remplacé le 1 par un 0:</p>
<blockquote>
<hr>
<pre>
<code># ifndef NAMED_BIND
# define NAMED_BIND 0 /* use Berkeley Internet Domain Server */
# endif
</code>
</pre>
<hr></blockquote>
<p>Sur la Debian 1.3, <code>db.h</code> est installé par
défaut dans <code>/usr/include/db</code>, au lieu de
<code>/usr/include</code> où sendmail espère le
trouver. Placez-vous successivement dans les
sous-répertoires <code>src</code>, <code>mailstats</code>,
<code>makemap</code>, <code>praliases</code>, <code>rmail</code> et
<code>smrsh</code> et éxecutez la commande
suivante :</p>
<blockquote>
<pre>
<code> ./Build -I/usr/include/db
</code>
</pre></blockquote>
<p>Ensuite, <code>cd ..</code> et tapez <code>make install</code>.
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 <code>/etc/sendmail.cf</code> :</p>
<blockquote>
<hr>
<pre>
<code>O DontBlameSendmail=forwardfileinunsafedirpath, forwardfileinunsafedirpathsafe
</code>
</pre>
<hr></blockquote>
<p>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 <code>.forward</code>. 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.</p>
<h2><a name="ss3.7">3.7 Quelques astuces pour les administrateurs
système débutants. <em>Jim Dennis,</em>
<code>jadestar@rahul.net</code></a></h2>
<p>Créez et tenez à jour un fichier
<code>/README.`hostname`</code> ou
<code>/etc/README.`hostname`</code> <em>[ ou
éventuellement <code>/usr/local/etc/README.`hostname`</code>
- le rédacteur ]</em></p>
<p>Absolument, à compter du <em>premier jour</em> 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 <code>.bash_logout</code> de root. Une autre
façon de faire est d'écrire un script <code>su</code>
ou <code>sudo</code> qui fait quelque chose comme
ça :</p>
<blockquote>
<pre>
<code> 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 -
</code>
</pre></blockquote>
<p>(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).</p>
<p>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.</p>
<p>Ma dernière suggestion (pour cette fois) :</p>
<p>La variable PATH de root devrait contenir
<code>PATH=~/bin</code>.</p>
<p>C'est tout. Rien d'autre dans le PATH de root. Tout ce que root
peut faire est fourni par un lien symbolique dans
<code>~/bin</code>, un alias, une fonction shell, un script ou un
binaire situé dans <code>~/bin</code>, ou bien la commande
est tapée avec un chemin d'accès explicite.</p>
<p>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
<code>~/bin</code> et ses fichiers <code>~/.*history</code> pour y
chercher des répétitions et des moyens de les
contourner.</p>
<p>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 (<code>./.exrc</code>) ou emacs
(<code>./.emacs</code>) 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 :</p>
<blockquote>
<pre>
<code> cp $données $répertoire_utilisateur/tmp
su -c $commande_d_origine $paramètres
cp $répertoire_utilisateur/tmp $données
</code>
</pre></blockquote>
<p>(... où les détails dépendent de la
commande).</p>
<p>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).</p>
<h2><a name="ss3.8">3.8 Comment configurer <code>xdm</code> pour
qu'il permette de choisir le système hôte ? <i>Arrigo
Triulzi,</i> <code>a.triulzi@ic.ac.uk</code>.</a></h2>
<ol>
<li>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 :
<blockquote>
<pre>
<code>/usr/bin/X11/xdm
exec /usr/bin/X11/X -indirect hostname
</code>
</pre></blockquote>
</li>
<li>Modifier le fichier /usr/lib/X11/xdm/Xservers et commenter la
ligne invoquant le serveur sur la machine locale (commence par
"0:")</li>
<li>Relancer le système... tout doit fonctionner !</li>
</ol>
<p>J'ajoute cette section après avoir sué une semaine
durant sur ce problème !</p>
<p>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 <b>PAS</b> cette caractéristique.</p>
</body>
</html>
|