<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Notions de base au sujet des fichiers</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Manuel de référence"><link rel="up" href="unix-basics.html" title="Chapitre 1. Concepts UNIX de base"><link rel="previous" href="ch01s01.html" title="Utilisateurs et groupes"><link rel="next" href="basics-process.html" title="Les processus"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Notions de base au sujet des fichiers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s01.html">Précédent</a> </td><th width="60%" align="center">Chapitre 1. Concepts UNIX de base</th><td width="20%" align="right"> <a accesskey="n" href="basics-process.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2529915"></a>Notions de base au sujet des fichiers</h2></div></div><div></div></div><p><a name="BId-unix-basics-pa19"></a>Les fichiers sont un autre domaine où <span class="application">GNU/Linux</span> diffère totalement de <span class="application">Windows</span> et de la plupart des autres <a name="BId-unix-basics-gt9" href="glossary.html#term-operating-system"><i class="glossterm">systèmes d'exploitation</i></a>. Nous n'aborderons ici que les différences les plus visibles. Si vous le souhaitez, vous pouvez lire le chapitre <a href="ext2fs.html" title="Chapitre 9. Le système de fichiers Linux">Chapitre 9, <i>Le système de fichiers Linux</i></a>, qui approfondit ce sujet.</p><p><a name="BId-unix-basics-pa20"></a>La première différence est une conséquence directe du fait que <span class="application">GNU/Linux</span> soit un système multiutilisateurs : chaque fichier est la propriété exclusive d'un utilisateur et d'un groupe. Un peu plus haut, nous avons parlé des utilisateurs, mais une chose que nous n'avons pas mentionné est que chaque utilisateur dispose de son propre répertoire (appelé son répertoire personnel, à savoir son <span class="foreignphrase"><i class="foreignphrase"> <a name="BId-unix-basics-gt10" href="glossary.html#term-home-directory"><i class="glossterm">home directory</i></a> </i></span> en anglais). Il est le propriétaire de ce répertoire, ainsi que de tous les fichiers qu'il y créera par la suite. Lui, et personne d'autre.</p><p><a name="BId-unix-basics-pa21"></a>Cependant, la notion de propriété d'un fichier, prise seule, ne servirait pas à grand-chose. Mais il y a plus : en tant que propriétaire d'un fichier, un utilisateur peut établir des <span class="emphasis"><em>droits</em></span> sur ce fichier. Ces droits distinguent trois catégories d'utilisateurs : le propriétaire du fichier, tout utilisateur qui est membre du groupe propriétaire associé au fichier (appelé le <a name="BId-unix-basics-gt11" href="glossary.html#term-owner-group"><i class="glossterm">groupe propriétaire</i></a>) mais n'est pas le propriétaire lui-même, et les autres, catégorie qui regroupe tout utilisateur qui n'est ni le propriétaire, ni un membre du groupe propriétaire.</p><p><a name="BId-unix-basics-pa22"></a>On distingue trois types de droits :</p><div class="orderedlist"><ol type="1"><li><p><a name="BId-unix-basics-pa23"></a>Droit de lecture (<tt class="literal">r</tt> pour <span class="foreignphrase"><i class="foreignphrase">Read</i></span> ou lire). Sur un fichier, cela autorise la lecture de son contenu. Pour un répertoire, cela autorise son contenu (c'est-à-dire les fichiers qu'il contient) à être listé.</p></li><li><p><a name="BId-unix-basics-pa24"></a>Droit d'écriture (<tt class="literal">w</tt> pour <span class="foreignphrase"><i class="foreignphrase">Write</i></span> ou écrire). Pour un fichier, cela autorise la modification de son contenu. Pour un répertoire, l'accès en écriture autorise un utilisateur à ajouter et retirer des fichiers de ce répertoire, même s'il n'est pas le propriétaire des-dits fichiers.</p></li><li><p><a name="BId-unix-basics-pa25"></a>Droit d'exécution (<tt class="literal">x</tt> pour <span class="foreignphrase"><i class="foreignphrase">eXecute</i></span> ou exécuter). Pour un fichier, cela en autorise l'exécution (par conséquent, seuls les fichiers exécutables devraient normalement avoir ce droit positionné). Pour un répertoire, cela autorise un utilisateur à le <a name="BId-unix-basics-gt12" href="glossary.html#term-traverse"><i class="glossterm">traverser</i></a> (ce qui signifie entrer dans ce répertoire ou passer par celui-ci). Notez bien la séparation avec le droit en lecture : il se peut très bien que vous puissiez traverser un répertoire sans pouvoir lire son contenu !</p></li></ol></div><p><a name="BId-unix-basics-pa26"></a>Toutes les combinaisons de ces droits sont possibles : vous pouvez par exemple autoriser la lecture du fichier à vous seul et l'interdire à tous les autres. Vous pouvez même faire l'inverse, même si ce n'est pas très logique à première vue... En tant que propriétaire du fichier, vous pouvez en changer le groupe propriétaire (si et seulement si vous êtes aussi membre du nouveau groupe), et même vous déposséder du fichier (c'est-à-dire en changer le propriétaire). Bien entendu, si vous vous dépossédez d'un fichier, vous perdrez tous les droits sur celui-ci...</p><p><a name="BId-unix-basics-pa27"></a>Prenons l'exemple d'un fichier et d'un répertoire. L'affichage ci-dessous correspond à la frappe de la commande <span><b class="command">ls -l</b></span> depuis une <a name="BId-unix-basics-gt13" href="glossary.html#term-command-line"><i class="glossterm">ligne de commande</i></a> : </p><p><a name="BId-unix-basics-pa28"></a> <a name="BId-unix-basics-pl1"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ ls -l total 1 -rw-r----- 1 reine users 0 Jul 8 14:11 un_fichier drwxr-xr-- 2 pierre users 1024 Jul 8 14:11 un_repertoire/ $ </pre></td></tr></table><p> </p><p><a name="BId-unix-basics-pa29"></a> Les différents champs de sortie de la commande <span><b class="command">ls -l</b></span> sont les suivants (de gauche à droite) : </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa30"></a>Les dix premiers caractères désignent successivement le type du fichier et les droits qui lui sont associés ; le premier caractère désigne le type du fichier : c'est un tiret (<tt class="literal">-</tt>) s'il s'agit d'un fichier ordinaire, <tt class="literal">d</tt> si le fichier est un répertoire. Il existe d'autres types de fichiers dont nous parlerons dans ce manuel. Les neuf caractères qui suivent représentent les droits associés au fichier. Les neuf prochains caractères sont séparés en trois groupes de trois permissions. Le premier groupe représente les droits associés au propriétaire ; les trois prochains s'appliquent à tous les utilisateurs appartenant au même groupe mais qui ne sont pas le propriétaire ; et les trois derniers aux autres. Un tiret (<tt class="literal">-</tt>) signifie que le droit n'est pas octroyé.</p></li><li><p><a name="BId-unix-basics-pa31"></a>Vient ensuite le nombre de liens du fichier. Nous verrons plus loin que l'identifiant unique d'un fichier n'est pas son nom, mais un numéro (le <a name="BId-unix-basics-gt14" href="glossary.html#term-inode"><i class="glossterm">numéro d'inœud</i></a>), et qu'il est possible pour un fichier sur disque d'avoir plusieurs noms. Pour un répertoire, le nombre de liens a une signification spéciale, que nous aborderons également un peu plus loin.</p></li><li><p><a name="BId-unix-basics-pa32"></a>viennent ensuite le nom de l'utilisateur propriétaire du fichier et le nom du groupe propriétaire ;</p></li><li><p><a name="BId-unix-basics-pa33"></a>enfin sont affichés la taille du fichier (en <a name="BId-unix-basics-gt15" href="glossary.html#term-byte"><i class="glossterm">octets</i></a>) ainsi que la date de sa dernière modification. Pour finir, vous trouverez également le nom du fichier ou du répertoire lui-même à la fin de la ligne.</p></li></ul></div><p><a name="BId-unix-basics-pa34"></a> Observons maintenant en détails les droits associés à l'accès de chacun de ces fichiers : il faut tout d'abord enlever le premier caractère, qui désigne le type. Donc, pour le fichier <tt class="filename">un_fichier</tt>, les droits accordés sont : <tt class="literal">rw-r-----</tt>. Voici comment les interpréter : </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa35"></a>les trois premiers (<tt class="literal">rw-</tt>) sont les droits accordés à l'utilisateur propriétaire de ce fichier, en l'occurrence reine. L'utilisateur reine peut donc lire le fichier (<tt class="literal">r</tt>), le modifier (<tt class="literal">w</tt>) mais ne peut pas l'exécuter (<tt class="literal">-</tt>) ;</p></li><li><p><a name="BId-unix-basics-pa36"></a>les trois suivants (<tt class="literal">r--</tt>) s'appliquent à tout utilisateur qui n'est pas reine mais qui appartient au groupe <tt class="literal">users</tt> : il pourra lire le fichier (<tt class="literal">r</tt>), mais ne pourra ni le modifier ni l'exécuter (<tt class="literal">--</tt>) ;</p></li><li><p><a name="BId-unix-basics-pa37"></a>les trois derniers (<tt class="literal">---</tt>) s'appliquent à tout utilisateur qui n'est pas reine et qui n'appartient pas au groupe <tt class="literal">users</tt> : un tel utilisateur n'a tout simplement aucun droit sur ce fichier.</p></li></ul></div><p><a name="BId-unix-basics-pa38"></a>Pour le répertoire <tt class="filename">un_répertoire</tt>, les droits sont <tt class="literal">rwxr-xr--</tt>, et donc :</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa39"></a>pierre, en tant que propriétaire du répertoire, peut en lister le contenu (<tt class="literal">r</tt>), peut ajouter des fichiers dans ce répertoire ou en supprimer (<tt class="literal">w</tt>), et il peut traverser ce répertoire (<tt class="literal">x</tt>) ; </p></li><li><p><a name="BId-unix-basics-pa40"></a>tout utilisateur qui n'est pas pierre mais qui appartient au groupe <tt class="literal">users</tt> pourra lister le contenu de ce répertoire (<tt class="literal">r</tt>) mais ne pourra pas y ajouter des fichiers (<tt class="literal">-</tt>) ; par contre, il aura le droit de le traverser (<tt class="literal">x</tt>) ; </p></li><li><p><a name="BId-unix-basics-pa41"></a>tout autre utilisateur ne pourra que lister les fichiers de ce répertoire (<tt class="literal">r</tt>), mais c'est tout. Il sera incapable de le traverser. </p></li></ul></div><p><a name="BId-unix-basics-pa42"></a>Il existe <span class="emphasis"><em>une</em></span> exception à ces règles : <tt class="literal">root</tt>. <tt class="literal">root</tt> peut changer les attributs (droits, propriétaire, groupe propriétaire) de tous les fichiers, même s'il n'en est pas le propriétaire. Cela veut dire qu'il peut aussi s'en attribuer la propriété ! Il peut lire des fichiers sur lesquels il n'a pas le droit de lecture, traverser des répertoires auxquels il n'aurait normalement pas accès, et ainsi de suite. Et s'il lui manque un droit, il lui suffit simplement de se le rajouter...</p><p><a name="BId-unix-basics-pa43"></a> Pour conclure, il est utile de mentionner les différences entres les noms de fichiers dans le monde <span class="application">UNIX</span> et le monde <span class="application">Windows</span>. <span class="application">UNIX</span> permet une flexibilité bien plus grande et a moins de limitations :</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa44"></a>un nom de fichier peut comporter n'importe quel caractère (à l'exception du caractère <span class="acronym">ASCII</span> 0, qui dénote la fin d'une chaîne de caractères, et <span><b class="keycap">/</b></span>, qui est le séparateur de répertoires), même des caractères non imprimables. De plus, <span class="application">UNIX</span> est sensible à la casse : les fichiers <tt class="filename">readme</tt> et <tt class="filename">Readme</tt> sont différents, car <tt class="literal">r</tt> et <tt class="literal">R</tt> sont deux caractères <span class="emphasis"><em>distincts</em></span> pour les systèmes basés sur <span class="application">UNIX</span> ;</p></li><li><p><a name="BId-unix-basics-pa45"></a>comme vous avez pu le remarquer, un nom de fichier ne comporte pas forcément une extension, à moins que vous le vouliez. Les extensions de fichier n'identifient pas le contenu desdits fichiers sous <span class="application">GNU/Linux</span>. D'ailleurs, il en va de même sur tous les systèmes d'exploitation. Cependant, ces « <span class="quote">extensions</span> » ainsi nommées sont toujours très pratiques. Le caractère point (<tt class="literal">.</tt>) sous <span class="application">UNIX</span> n'est qu'un caractère comme les autres. Notons que les noms de fichier commençant avec un point sous <span class="application">UNIX</span> sont des « <span class="quote">fichiers cachés</span> ».</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left"><a name="unix-basics-pa45a"></a>Note</th></tr><tr><td colspan="2" align="left" valign="top"><p><a name="BId-unix-basics-pa46"></a>Toutefois il est à signaler que certaines applications graphiques (gestionnaires de fichiers, applications bureautiques, etc.) utilisent effectivement les extensions de noms de fichiers pour reconnaître facilement les formats de fichier. C'est donc une bonne idée d'utiliser ces extensions pour les applications qui en tirent parti.</p></td></tr></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s01.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="unix-basics.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="basics-process.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">Utilisateurs et groupes </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Les processus</td></tr></table></div></body></html>