[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

debian-guide_fr-1.0_chap15.sgml



<chapt> Pour en savoir plus...

<p>
À présent, vous possédez de bonnes bases pour construire votre système
GNU/Linux. Dans ce chapitre, nous allons aborder quelques notions très
utiles des fonctionnalités avancées de GNU/Linux.

<sect>  Expressions rationnelles

<p>
Une <em>expression rationnelle</em> est une description d'un jeu de
caractères. Cette description peut être utilisée pour rechercher dans
un fichier en cherchant dans le texte les parties qui correspondent
aux expressions rationnelles. Les expressions rationnelles sont
analogues aux motifs de recherche du shell (voir partie 8.6) mais
elles sont plus compliquées et beaucoup plus puissantes.

<p>
Une expression rationnelle est formée de texte et de
<em>méta-caractères</em>. Un méta-caractère est simplement un
caractère avec une signification particulière. Les méta-caractères
comprennent les signes suivant:
<example>
. * [] - \ ^ $
</example>

<p>
Si une expression rationnelle ne comprend que du texte (pas de
méta-caractère), cela correspond exactement au texte. Par exemple,
l'expression rationnelle <prgn>mon expression rationnelle</prgn>
correspond exactement au texte <prgn>mon expression rationnelle</prgn>
et à rien d'autre. Les expressions rationnelles sont bien-sûr
sensibles à la casse.

<p>
Vous pouvez utiliser la commande <prgn>egrep</prgn> pour extraire les
lignes d'un fichier qui contiennent une expression rationnelle. Sa
syntaxe est la suivante:

<p>
<example>
egrep 'regexp' nomdefichier1 ...
</example>

<p>
Les guillements simples ne sont pas obligatoires mais cela ne mange pas
de pain de les ajouter.

<p>
Par exemple, pour trouver toutes les lignes contenant le mot GNU dans
la GPL, vous tapez:

<p>
<example>
egrep 'GNU' /usr/doc/copyright/GPL
</example>

<p>
<prgn>egrep</prgn> va vous égrener les lignes correspondantes sur la
sortie standard. Si vous voulez toutes les lignes contenant
<prgn>freedom</prgn> (liberté) suivi d'un jeu de caractères
indéterminés et suivi du mot GNU, vous pouvez taper:

<p>
<example>
egrep 'freedom.*GNU' /usr/doc/copyright/GPL
</example>

<p>
Le <prgn>.</prgn> signifie « n'importe quel type de caractères » et le
<prgn>*</prgn> signifie « zéro ou plus de la chose précédente » soit
dans ce cas « zéro ou plus de n'importe quels caractères ». Ainsi,
<prgn>.*</prgn> correspond tout le temps à n'importe quel
texte. <prgn>egrep</prgn> n'effectue un traitement que ligne par ligne
donc <prgn>freedom</prgn>et <prgn>GNU</prgn> doivent se trouver sur la
même ligne.

<p>
Voici un résumé des méta-caractères des expressions rationnelles:

<p>
<list>
<item> <prgn>.</prgn>
<p>
  Correspond à un seul caractère, à l'exception du caractère
  <em>newline</em> (retour chariot)
<item> <prgn>*</prgn>
<p>
  Correspond à zéro ou plus d'occurences de ce qui précède. Ainsi,
  l'expression <prgn>a*</prgn> correspond à zéro ou plus de
  <prgn>a</prgn> minuscule. et <prgn>.*</prgn> correspond à zéro ou
  plus de caractères quelconques.
<item> <prgn>[caractères]</prgn>
<p>
  Les crochets doivent contenir un ou plusieurs
  caractères. L'expression complète correspond exactement à son jeu de
  caractères. Ainsi, <prgn>[abc]</prgn> correspond à un
  <prgn>a</prgn>, un <prgn>b</prgn> et un <prgn>c</prgn>. Cela ne
  correspond pas à une chaîne vide et cela ne correspond pas non plus
  à un caractère autre que ces trois-là.  <item> <prgn>^</prgn>
<p>
  Impose la correspondance en début de ligne. L'expression
  <prgn>^The</prgn> ne correspond à <prgn>The</prgn> que si elle
  apparait en début de ligne: il ne peut y avoir d'espace, ou de
  texte, avant le <prgn>The</prgn>. Si vous désirez autoriser des
  espaces, vous pouvez autoriser 0 ou plus d'espaces avec <prgn>^
  *The</prgn>.
<item> <prgn>$</prgn>
<p>
  Impose la correspondance en fin de ligne. <prgn>fin$</prgn>
  recquiert que le texte <prgn>fin</prgn> soit placé en fin de ligne
  sans espace ni texte à la fin.
<item> <prgn>[^caractères]</prgn>
<p>
  Ceci est la négation de la liste des caractères entre
  crochets. <prgn>[^abc]</prgn> correspond à tout caractère simple, à
  l'exception de a, b ou c.
<item> <prgn>[caractères-caractères]</prgn>
<p>
  Vous pouvez inclure un intervalle dans une liste de caractères entre
  crochets. Pour faire la correspondance avec toutes les lettres
  minuscules, utilisez <prgn>[a-z]</prgn>. Vous pouvez multiplier les
  intervalles: ainsi, pour avoir les trois premières lettres de
  l'alphabet et les trois dernières, essayez
  <prgn>[a-cx-z]</prgn>. Pour avoir toutes les lettres dans toutes les
  casses, essayez <prgn>[a-zA-Z]</prgn>. Vous pouvez mélanger les
  intervalles avec des caractères simples ou bien le méta-caractères
  <prgn>^</prgn>: <prgn>[^a-zBZ]</prgn> signifie « tout sauf une
  lettre minuscule, un B ou ou un Z ».
<item> <prgn>()</prgn>
<p>
  Vous pouvez utiliser les parenthèses pour regrouper les expressions
  rationnelles, comme dans des expressions mathématiques.
<item> <prgn>||</prgn>
<p>
  signifie « ou ».  Vous pouvez vous en servir pour fournir une série
  d'expressions alternatives. On met généralement ces expressions
  entre parenthèses comme ceci: <prgn>c(ad|ab|at)</prgn> correspond à
  <prgn>cad</prgn>, <prgn>cab</prgn> ou <prgn>cat</prgn>. Sans les
  parenthèses, cela aurait correspondu à <prgn>cad</prgn> ou bien
  <prgn>ab</prgn> ou bien <prgn>at</prgn>.
<item> <prgn>\</prgn>
<p>
  Protège tout caractère spéciaux. Si vous désirez trouver un
  <prgn>*</prgn>, vous devez taper <prgn>\*</prgn>. Le \ signifie
  d'ignorer le sens usuel de <prgn>*</prgn>.
</list>

<p>
Voici une série d'exemples concrets pour vous aider.

<p>
<list>
<item> <prgn>c.pe</prgn> correspond à <prgn>cope, cape, caper</prgn>
<item> <prgn>c\.pe</prgn> correspond à <prgn>c.pe, c.per</prgn>
<item> <prgn>sto*p</prgn> correspond à <prgn>stp, stop, stoop</prgn>
<item> <prgn>car.*n</prgn> correspond à <prgn>carton, cartoon, carmen</prgn>
<item> <prgn>xyz.*</prgn> correspond à <prgn>xyz</prgn> et tout ce qui
s'ensuit. Certains outils, comme <prgn>egrep</prgn>, ne font la
correspondance que jusqu'à la fin de la ligne.  
<item> <prgn>^The</prgn> correspond à <prgn>The</prgn> en début de ligne
<item> <prgn>atime$</prgn> correspond à <prgn>atime</prgn> en fin de ligne
<item> <prgn>^Only</prgn> correspond à <prgn>Only</prgn> en début de
ligne - pas d'espace, de caractère, rien. Seul <prgn>Only</prgn>
est accepté.  
<item> <prgn>b[aou]rn</prgn> correspond à <prgn>barn, born, burn</prgn>
<item> <prgn>ver[D-F]</prgn> correspond à <prgn>verD, verE, verF</prgn>
<item> <prgn>ver[^0-9]</prgn> correspond à <prgn>Ver</prgn> suivi de
tout sauf d'un chiffre.
<item> <prgn>the[ir][re]</prgn> correspond à <prgn>thier, therr,
there, theie</prgn>
<item> <prgn>[A-Za-z][A-Za-z]*</prgn> correspond à tous les mots composés
seulement de lettres et d'au moins une lettre. Cela ne peut pas
contenir des chiffres ou des espaces.
</list>
</sect>

<sect> Notions avancées sur les fichiers

<p>
Maintenant que vous avez compris les bases sur les fichiers, il est
temps d'apprendre plus de choses à leur sujet.

<sect1> La véritable nature des fichiers: liens physiques et inodes

<p>
Chaque fichier de votre système est représenté par un <em>inode</em>
(pour <em>Information Node</em>, prononcez « aïe-node », noeud
d'information). un inode contient toutes les informations du
fichier. Cependant, l'inode n'est pas directement visible. De plus,
chaque inode est lié au système de fichiers par un ou plusieurs liens
physiques. Les liens physiques contiennent le nom du fichier et le
numéro d'inode. L'inode contient le fichier en lui-même, c'est-à-dire,
l'emplacement où l'information est stockée sur le disque, les
permissions d'accès, le type de fichier et ainsi de suite. Le système
peut trouver n'importe quelle inode s'il a son numéro.

<p>
Un simple fichier peut avoir plus d'un lien physique. Cela signifie
que tous ces fichiers multiples correspondent au même fichier
(c'est-à-dire qu'ils sont associés au même numéro d'inode). Cependant,
vous ne pouvez faire de lien physique entre des systèmes de fichiers:
tous les liens physiques à un fichier particulier (inode) doivent être
dans le même système de fichiers. C'est parce que chaque système de
fichiers possède sa propre table d'inodes et que l'on ne peut
dupliquer des numéros d'inode sur différents systèmes de fichiers.

<p>
Parce que tous les liens physiques à une certaine inode se réfèrent au
<em>même fichier</em>, vous pouvez modifier le fichier en l'appelant
par un nom et voir ensuite les modifications en l'appelant par un des
autres nom. Essayez ceci:

<p>
<example>
cd; echo "Bonjour" > premierlien
</example>

<p>
Vous allez dans votre répertoire personnel et vous créez un premier
fichier appelé <prgn>premierlien</prgn> contenant le mot « Bonjour
». Ce que vous venez de faire est juste de rediriger la sortie de
<prgn>echo</prgn> (<prgn>echo</prgn> renvoie juste ce que vous lui
donnez) en la plaçant dans <prgn>premierlien</prgn>. Allez voir le
chapitre sur le shell pour de plus amples explications.

<p>
<example>
cat premierlien
</example>

<p>
Pour vérifier le contenu de <prgn>premierlien</prgn>.

<p>
<example>
ln premierlien secondlien
</example>

<p>
Crée un lien physique: <prgn>secondlien</prgn> pointe maintenant sur
le même inode que <prgn>premierlien</prgn>.

<p>
<example>
cat secondlien
</example>

<p>
Pour confirmer que <prgn>secondlien</prgn> est bien identique à
<prgn>premierlien</prgn>.

<p>
<example>
ls -l
</example>

<p>
Remarquez bien que le nombre de liens physiques affichés pour
<prgn>premierlien</prgn> et <prgn>secondlien</prgn> est 2.

<p>
<example>
echo "change" >> secondlien
</example>

C'est une nouvelle redirection du shell (ne vous souciez pas des
détails). Vous avez ajouté le mot « change » à
<prgn>secondlien</prgn>. Confirmez-le avec <prgn>cat
secondlien</prgn>.

<p>
<example>
cat premierlien
</example>

<p>
<prgn>premierlien</prgn> a aussi le mot « change » ! C'est parce que
<prgn>premierlien</prgn> et <prgn>secondlien</prgn> se réfèrent au
<em>même fichier</em>. Il ne s'occupe pas de la façon dont vous
l'appelez lorsque vous le modifiez.

<p>
<example>
chmod a+rwx premierlien
</example>

<p>
Cela modifie les permissions de <prgn>premierlien</prgn>. Entrez la
commande <prgn>ls -l</prgn> pour confirmer que les permissions de
<prgn>secondlien</prgn> ont aussi été modifiées. Cela signifie que les
informations de permission résident dans l'inode, et non dans le lien.

<p>
<example>
rm premierlien
</example>

<p>
Cela détruit le lien. C'est une sous-fonctionnalité de
<prgn>rm</prgn>. Cela détruit réellement le lien et non le
fichier. Maintenant, tapez <prgn>ls -l</prgn> et remarquez que
<prgn>secondlien</prgn> est toujours là. Notez bien aussi que le
nombre de liens est passé de 2 à 1.

<p>
<example>
rm secondlien
</example>

<p>
Cela détruit le second lien. Quand il ne reste plus de lien rattaché à
un fichier, Linux détruit le fichier lui-même c'est-à-dire son inode.

<p>
Tous les fichiers fonctionnent ainsi, et même les fichiers spéciaux
comme les périphériques (comme <prgn>/dev/hdaa</prgn>).

<p>
Un répertoire n'est qu'une liste de nom de fichiers et de numéros
d'inodes, c'est-à-dire une liste de liens physiques. Lorsque vous
créez un lien physique, vous ajouter seulement une association
numéro-nom à un répertoire. Lorsque vous détruisez un fichier, vous
détruisez juste un lien physique d'un répertoire.
</sect1>

<sect1> Types de fichiers

<p>
Un détail sur lequel on est passé un peu rapidement est que le noyau
Linux considère presque tout comme un fichier. Cela inclut les
répertoires et les périphériques. Ce sont juste des genres de fichiers
un peu spéciaux.

<p>
Comme vous devez vous le rappelez, le premier caractère dans <prgn>ls
-l</prgn> renvoie le type du fichier. Pour un fichier ordinaire, cela
ne renvoie que <prgn>-</prgn> tout simplement. Les autres possibilités
sont les suivantes:

<p>
<list>
<item> <prgn>d</prgn> : répertoire
<item> <prgn>l</prgn> : lien symbolique
<item> <prgn>b</prgn> : périphérique bloc
<item> <prgn>c</prgn> : périphérique caractère
<item> <prgn>p</prgn> : tube nommé
<item> <prgn>s</prgn> : socket
</list>

<p>
<em>Liens symboliques</em>

<p>
Les liens symboliques (aussi appelés <em>symlink</em> ou liens
logiciels) sont l'autre type de lien avec les liens physiques. Un lien
symbolique est un fichier spécial qui « pointe vers » un lien physique
de n'importe quels systèmes de fichiers montés. Lorsque vous tentez de
lire le contenu d'un lien symbolique, cela vous renvoie le contenu du
fichier pointé plutôt que le contenu du lien en lui-même. Puisque les
répertoires, les périphériques et autres liens symboliques sont des
fichiers, vous pouvez pointer un lien symbolique sur chacun de ces
objets.

<p>
Pour résumé, un lien physique est un nom de fichier et son numéro
d'inode. Un fichier est réellement un inode: un emplacement sur un
disque, le type du fichier, les modes de permission, etc... Un lien
symbolique est un inode qui contient le nom du lien physique. Un lien
symbolique apparaille deux noms ensemble tandis qu'un lien physique
appareille un nom de fichier avec un numéro d'inode.

<p>
Tous les liens physiques d'un même fichier ont le même état. Cela veut
dire qu'il n'y en a pas un de privilégié. Si vous effectuez une
opération sur l'un, c'est comme la faire sur n'importe lequel d'entre
eux. C'est parce que le lien physique réfère au même inode. Les
opérations sur les liens symboliques, pour leurs parts, affectent
parfois le propre inode du lien (celui contenant le nom du lien
physique) et parfois affectent le lien physique sur lequel ils
pointent.

<p>
Il y a un certain nombre de différences importantes entre les liens
symboliques et les liens physiques.

<p>
Les liens symboliques peuvent traverser des systèmes de
fichiers. C'est parce qu'ils contiennent des noms de fichier complets,
en partant d'un répertoire racine et que les noms de fichiers complets
sont uniques. Puisque les liens physiques pointent vers un numéro
d'inode et que les numéros d'inodes sont définis de façon unique qu'à
l'intérieur d'un système de fichiers, ils deviendraient impossible de
les qualifier avec certitude si l'on ne connaissait pas le système de
fichiers.

<p>
Vous pouvez faire des liens symboliques vers des répertoires mais cela
n'est pas possible pour les liens physiques. Chaque répertoire a son
lien physique - cela apparait dans son répertoire parent, l'entrée
<prgn>.</prgn> et <prgn>..</prgn> - mais pour pouvoir ordonner le
système de fichiers, aucun autre lien physique n'est autorisé. En
conséquence de quoi, le nombre de fichiers d'un répertoire est égal au
nombre de liens physiques du répertoire moins deux (vous retirez le
nom du répertoire et le lien <prgn>.</prgn> ).

<p>
Pour comparer un lien physique et un lien symbolique: vous pouvez
uniquement faire un lien physique sur un fichier existant car il doit
exister un numéro d'inode sur lequel se référer. Par contre, vous
pouvez faire un lien symbolique sur n'importe quoi, même si ce n'est
pas vraiment un fichier.

<p>
Détruire un lien symbolique détruit seulement le lien. Cela n'a pas
d'impact sur le fichier anciennement pointé. Détruire le seul lien
physique d'un fichier conduit à détruire le fichier.

<p>
Essayez ceci:

<p>
<example>
cd; ln -s /tmp/moi MonTmp
</example>

<p>
Vous vous positionnez dans votre répertoire personnel. <prgn>ls</prgn>
avec l'option <prgn>-s</prgn> fabrique un lien symbolique et dans ce
cas, ce lien s'appelle <prgn>MonTmp</prgn> et pointe sur le fichier
<prgn>/tmp/moi</prgn>.

<p>
<example>
ls -l MonTmp
</example>

<p>
Vous devriez observer une sortie du genre:

<p>
<example>
lrxwrxwrxw 1 havoc havoc 7 Dec 6 12:50 MyTmp -> /tmp/me
</example>

<p>
La date ainsi que l'utilisateur et le groupe devrait être différent
pour vous. Notez le type du fichier: <prgn>l</prgn>. Cela indique un
lien symbolique. Regardez aussi les permissions. Les liens symboliques
ont toujours ces permissions. Si vous tentez de changer les
permissions d'un fichier symbolique via <prgn>chmod</prgn>, vous allez
réellement changer les permissions du fichier sur lequel il pointe.

<p>
<example>
chmod 700 MonTmp
</example>


<p>
Vous devriez obtenir un <prgn>No such file or directory</prgn> (pas
trouvé de fichier ou de répertoire portant ce nom) car le fichier
<prgn>/tmp/moi</prgn> n'existe pas. Remarquez que cela n'a pas empêché
la création du lien symbolique.

<p>
<example>
mkdir /tmp/moi
</example>

<p>
Cela crée le répertoire <prgn>/tmp/moi</prgn>.

<p>
<example>
chmod 700 MonTmp
</example>

<p>
devrait maintenant fonctionner sans problème.

<p>
<example>
touch MonTmp/monfichier
</example>

<p>
Pour créer un fichier dans <prgn>MonTmp</prgn>.

<p>
<example>
ls /tmp/moi
</example>

<p>
Le fichier a vraiment été créé dans <prgn>/tmp/moi</prgn>.

<p>
<example>
rm MonTmp
</example>

<p>
Détruit le lien symbolique. Remarquez que cela ne retire que le lien
et non ce vers quoi il pointe. Ensuite, vous devez utiliser
<prgn>rm</prgn> et non pas <prgn>rmdir</prgn>:

<p>
<example>
rm /tmp/moi/monfichier; rmdir /tmp/moi
</example>

<p>
Cela nettoie tout ce qu'il reste.

<p>
<em> Fichiers périphériques </em>

<p>
Les fichiers périphériques se réfèrent à un périphériques physique ou
virtuel de votre système, comme votre disque dur, votre carte vidéo,
votre écran et votre clavier. Un exemple de périphérique virtuel est
la console, réprésentée par <prgn>/dev/console</prgn>.

<p>
Il y a deux sortes de périphériques: bloc et caractère. On peut avoir
accès aux <em>périphériques caractères</em> caractère par
caractère. Rappelez-vous que la plus petite unité de données qui peut
être écrite ou bien lue à partir du périphérique est un caractère
(octet).

<p>
On peut accéder aux <em>périphèriques bloc</em> avec des unités plus
grandes appelées blocs, qui contiennent un certain nombre de
caractères. Votre disque dur est un périphérique bloc.

<p>
Vous pouvez lire ou écrire dans des fichiers périphériques comme vous
le feriez avec n'importe quelle autre sorte de fichiers, à l'exception
peut-être que le fichier peut contenir une série de signes humainenemt
incompréhensibles. Écrire n'importe quoi dans ces fichiers n'est pas
une bonne idée. Parfois si. Par exemple, vous pouvez envoyer un
fichier postscript dans le périphérique de l'imprimante
<prgn>/dev/lp0</prgn> ou bien envoyer des commandes de modem au
fichier périphérique idoine à partir du bon port série.

<p>
Il existe un fichier particulier appelé <prgn>/dev/null</prgn>. Il
détruit tout ce qu'il reçoit. Si vous ne voulez pas quelque chose,
envoyez-le dans <prgn>/dev/null</prgn>. C'est essentiellement une
poubelle d'évacuation. Si vous tentez de lire <prgn>/dev/null/</prgn>,
vous obtiendrez un <em>end-of-file</em> (EOF, caractère de fin de
fichier) immédiatement. <prgn>/dev/zero</prgn> est similaire, à
l'exception du fait que sa lecture vous renverra le caractère
<prgn>\0</prgn> (pas le même que le chiffre 0).

<p>
<em>Tubes nommés (FIFO)</em>

<p>
Un tube nommé est un fichier qui agit comme un tube. Vous entrez
quelque chose dans le fichier et cela ressort. Ceci est appelé une
FIFO (<em>First-In-First-Out</em>, premier entré, premier sorti) car
la première chose que vous entrez est aussi la première chose que l'on
sort.

<p>
Si vous écrivez dans un tube nommé, le processus écrivant dans le tube
ne s'arrête pas tant que l'information en cours d'écriture est lu dans
le tube. Si vous lisez dans un tube nommé, le processus de lecture
attend jusqu'à ce qu'il y ait quelque chose à lire avant de
s'arrêter. La taille du tube est toujours zéro. Il ne stocke pas de
donnée: il relie simplement deux processus à travers le signe | du
shell. Dans tous les cas, puisque le tube a un nom, les deux processus
n'ont pas à appartenir à la même ligne de commandes ou même à être
lancé par le même utilisateur.

<p>
Vous pouvez essayer ceci:

<p>
<example>
cd; mkfifo montube
</example>

<p>
Activez alors le tube:

<p>
<example>
echo "bonjour" > montube &
</example>

<p>
Cela place le processus qui essaie d'écrire « bonjour » dans le tube
en arrière-plan. Remarquez bien que le processus ne rend pas la main:
il attend que quelqu'un vienne lire dans le tube:

<p>
<example>
cat montube
</example>

<p>
À ce moment, le processus <prgn>echo</prgn> s'achève car
<prgn>cat</prgn> a lu le tube et le processus <prgn>cat</prgn> a
affiché <prgn>bonjour</prgn>.

<p>
<example>
rm montube
</example>

<p>
Vous pouvez détruire les tubes comme n'importe quel autre fichier.


<p>
<em>Sockets</em>

<p>
Les sockets sont similaires aux tubes mais elles ne fonctionnent qu'à
travers un réseau. C'est de cette façon que votre ordinateur travaille
en réseau. Vous avez peut-être entendu parler de « WinSock », qui sont
les sockets de Windows.

<p>
Nous n'irons pas plus loin sur ce sujet car vous n'aurez pas
l'occasion de vous en servir, à moins de programmer. En tout cas, si
vous apercevez un fichier marqué avec un type <prgn>s</prgn> sur votre
ordinateur, vous saurez de quoi il s'agit.
</sect1>

<sect1> Le système de fichiers <prgn>proc</prgn>

<p>
Le noyau Linux fournit un système de fichiers particulier qui est
monté sous <prgn>/proc</prgn> dans les systèmes Debian. C'est ce que
l'on appelle un « pseudo-système de fichiers » parce qu'il n'existe
pas réellement sur vos périphériques physiques.

<p>
Le système de fichiers <prgn>proc</prgn> contient des informations sur
le système et sur les processus en cours. Certains des « fichiers » de
<prgn>proc</prgn> sont raisonnablement compréhensibles par un être
humain (essayez <prgn>cat /proc/meminfo</prgn> et <prgn>cat
/proc/cpuinfo</prgn>). Les autres fichiers sont une collections de
chiffres. Les utilitaires systèmes utilisent souvent la plupart de ces
informations pour vous les présenter d'une façon plus compréhensible.

<p>
Les gens paniquent souvent lorsqu'ils remarquent qu'un fichier en
particulier - <prgn>/proc/kcore</prgn> - est souvent énorme, C'est, à
un cheval près, une copie du contenu de la mémoire de votre
ordinateur. Il est utilisé pour déboguer le noyau. Il n'existe nulle
part physiquement donc ne vous préoccupez pas de sa taille.

<p>
Si vous désirez en savoir plus sur <prgn>/proc</prgn>, tapez <prgn>man
5 proc</prgn>.
</sect1>

<sect1> Copie à grande échelle

<p>
Il est parfois nécessaire de recopier un répertoire à un autre
emplacement. Peut-être avez-vous ajouté un nouveau disque dur et vous
désirez faire une copie de <prgn>/usr/local</prgn> dessus. Il y a
plusieurs façons de procéder:

<p>
La première est d'utiliser la commande <prgn>cp</prgn>. La commande
<prgn>cp -a</prgn> demande à <prgn>cp</prgn> de préserver le maximum
d'informations. Vous pourriez ainsi utiliser la commande suivante:

<p>
<example>
cp -a /usr/local /destination
</example>

<p>
Cependant, il existe quelques cas qui ne fonctionnent
pas<footnote>comme les fichiers éparts et les liens physiques par
exemple</footnote>. Dès-lors, la meilleure façon de procéder lors
d'une grande copie est d'enchaîner deux commandes <prgn>tar</prgn>
consécutives, comme ceci:

<p>
<example>
tar -cSpf - /usr/local | tar -xvSpf -C /destination
</example>

<p>
La première commande <prgn>tar</prgn> archive le répertoire et la tube
dans le second. La seconde commande la détare dans l'emplacement
spécifié avec l'option <prgn>-C</prgn>.
</sect1>
</sect>

<sect> Sécurité

<p>
Dans la partie 9.1, nous avons parlé des permissions sur les fichiers
dans Linux. C'est une façon fondamentale de conserver votre système
sécurisé. Si vous faîtes tourner un système multi-utilisateur ou un
serveur, il est primordial d'établir des bonnes permissions. Une bonne
règle de base consiste à configurer les fichiers avec les permissions
les plus basses autorisant leur bon usage.

<p>
Si vous faîtes tourner un serveur en réseau, il y a quelques petites
bricoles auxquelles il faut faire attention. Premièrement, vous devez
désinstaller ou arrêter les services que vous n'utilisez pas. Un bon
point de départ est le fichier <prgn>/ect/inetd.conf</prgn>. Vous
pouvez probablement désactiver quelques services. Pour la plupart des
services réseau, vous pouvez contrôler qui y a accès. Les fichiers
<prgn>/etc/host.allow</prgn> et <prgn>/etc/hosts.deny</prgn>
(documentés dans <prgn>man 5 hosts_access</prgn>) peuvent contrôler
qui a accès à ces services. Vous devez aussi être à jour des rustines
(<em>patches</em>) ou des mises-à-jour proposées par Debian. Elles
sont disponibles dans votre miroir FTP de Debian.

<p>
Les règles suivantes de bon sens doivent aussi s'appliquer:

<p>
<list>
<item> Ne révélez à personne votre mot de passe.
<item> N'envoyez jamais votre mot de passe en clair à travers Internet
en utilisant <prgn>telnet</prgn> ou <prgn>ftp</prgn>. Utilisez des
protocoles de cryptage ou évitez de vous loguer à distance.
<item> Évitez d'utiliser le compte root le plus possible
<item> N'installez pas de logiciels non-sûrs et ne les installez par à
partir de root
<item> Évitez de laisser des accès libre en écriture dans la mesure du
possible. <prgn>/tmp</prgn> est une exception de cette règle.
</list>

<p>
Ce n'est peut-être pas tout à fait suffisant pour quelqu'un qui fait
tourner un serveur: il faudrait dans ce cas se documenter un peu sur
la sécurité. Le mécanisme de sécurité de Debian vous protège de la
plupart des virus.
</sect>

<sect> Développement de logiciels avec Debian

<p>
Debian est une plateforme privilégiée pour le développement de
logiciels et la programmation. Voici une liste des langages et
pseudo-langages supportés: C, C++, Objective-C, Perl, Python, m4,
Ada, Pascal, Java, awk, Tcl/Tk, SQL, assembleur, Bourne shell, csh et
bien d'autres encore. L'écriture de programmes est hors du propos de
ce livre mais voici les programmes de développement parmi les plus
populaires que l'on trouve sur Debian:

<p>
<list>
<item> <prgn>gcc</prgn>
<p>
  Le compilateur C de GNU: un compilateur moderne et optimisé de C.
<item> <prgn>g++</prgn>
<p>
  Le compilateur C++ extrait de <prgn>gcc</prgn>
<item> <prgn>cpp</prgn>
<p>
  Le pré-processeur de C de <prgn>gcc</prgn>
<item> <prgn>perl</prgn>
<p>
  L'interpréteur Perl. Perl est super langage multi-usages.
<item> <prgn>gdb</prgn>
<p>
  Le débogueur GNU. Il est utilisé pour déboguer de nombreux langages.
<item> <prgn>gprof</prgn>
<p>
  Extraction de profile. Ce programme vous aide à optimiser votre
  programme pour augmenter ses performance.
<item> <prgn>emacs</prgn>
<p> 
  <em>GNU Emacs</em> est un éditeur et un environnement intégré de travail.
<item> <prgn>as</prgn>
<p>
 C'est l'assembleur de GNU.
</list>
</sect>

</chapt>

-- 
      |\      _,,,---,,_       Patrice KARATCHENTZEFF  
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:pkarat@club-internet.fr 
     |,4-  ) )-,_. ,\ (  `'-'         p.karatchentzeff@free.fr
    '---''(_/--'  `-'\_)





Reply to: