2. Notions de base sur les fichiers

Les fichiers sont un autre domaine où GNU/Linux diffère totalement de Windows® et de la plupart des autres systèmes d'exploitation. Nous n'aborderons ici que les différences les plus visibles. Si vous le souhaitez, vous pouvez lire le chapitre Chapitre 4, Le système de fichiers Linux, qui approfondit ce sujet.

Les différences principales sont des conséquences directes du fait que Linux 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é c'est que chaque utilisateur dispose de son propre répertoire (appelé son répertoire personnel, soit home directory 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. Notez que ces derniers ont aussi un groupe associé qui correspond initialement au groupe primaire de l'utilisateur propriétaire. Comme nous l'avons déjà mentionné (voir Section 1, « Utilisateurs et groupes »), un utilisateur peut appartenir à plusieurs groupes en même temps.

Cependant, la notion de propriété d'un fichier, prise seule, ne servirait pas à grand-chose. En tant que propriétaire d'un fichier, un utilisateur peut établir des permissions sur ce fichier. Ces permissions sont différentes pour trois catégories d'utilisateurs : le propriétaire du fichier, tout utilisateur qui est membre du groupe propriétaire associé au fichier (appelé le groupe propriétaire) 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.

On distingue trois types de droits :

  1. Droit de lecture (r Read) : permet à un utilisateur de lire le contenu d'un fichier. Pour un répertoire, cela autorise à lister son contenu (c'est-à-dire les fichiers qu'il contient)

  2. Droit d'écriture (w Write) : permet la modification du contenu d'un fichier. 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.

  3. Droit d'exécution (x eXecute) : permet à un fichier d'être exécuté (par conséquent, seuls les fichiers exécutables devraient normalement avoir ce droit positionné). Pour un répertoire, cela autorise un utilisateur à le traverser (ce qui signifie entrer dans ce répertoire ou passer par celui-ci). Notez bien la différence avec le droit en lecture : il se peut très bien que vous puissiez traverser un répertoire sans pouvoir lire son contenu !

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. 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).

Prenons l'exemple d'un fichier et d'un répertoire. L'affichage ci-dessous correspond à la frappe de la commande ls -l depuis la ligne de commande :

$ 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/
$

Les différents champs de sortie de la commande ls -l sont les suivants (de gauche à droite) :

Observons maintenant en détail les permissions associées à chacun de ces fichiers : il faut tout d'abord enlever le premier caractère, qui désigne le type. Donc, pour le fichier un_fichier, les droits accordés sont : rw-r-----. Voici comment les interpréter :

Pour le répertoire un_répertoire, les droits sont rwxr-xr--, et donc :

Il existe une exception à ces règles : root. root 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. root a le contrôle complet du système, ce qui implique un niveau de confiance assez élevé en la personne qui possède le mot de passe root.

Pour conclure, il est utile de mentionner les différences entre les noms de fichiers dans le monde UNIX® et le monde Windows®. UNIX® permet une flexibilité bien plus grande et a moins de limitations :

[Note]Note

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.



[1] Par défaut, les fichiers cachés ne seront pas visibles dans un gestionnaire de fichiers à moins de l'avoir expressément demandé. Dans un terminal, il vous faudra taper la commande ls -a pour voir tous les fichiers, y compris ceux cachés. En général, ils contiennent des informations de configuration. Depuis votre répertoire home/ jetez un oeil à .mozilla ou .openoffice pour voir un exemple.