Notions de base au sujet des 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 9. Le système de fichiers Linux, qui approfondit ce sujet.

La première différence est une conséquence directe du fait que GNU/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é est que chaque utilisateur dispose de son propre répertoire (appelé son répertoire personnel, à savoir son 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. Lui, et personne d'autre.

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 droits 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 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 membre du groupe propriétaire.

On distingue trois types de droits :

  1. Droit de lecture (r pour Read 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é.

  2. Droit d'écriture (w pour Write 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.

  3. Droit d'exécution (x pour eXecute 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 traverser (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 !

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

Prenons l'exemple d'un fichier et d'un répertoire. L'affichage ci-dessous correspond à la frappe de la commande ls -l depuis une 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é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 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...

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

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.