Mandrake Linux 8.2: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 1. Concepts de base des systèmes UNIX | Page suivante |
Les fichiers sont un autre domaine où GNU/Linux diffère totalement de windows et de la plupart des systèmes d'exploitation. Nous ne verrons ici que les différences visibles immédiatement. Si vous le souhaitez, vous pouvez lire le chapitre 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 est un système multi-utilisateurs : chaque fichier est la propriété exclusive d'un utilisateur et d'un groupe. Un peu plus tôt, 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 :
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é.
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 desdits fichiers.
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) :
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 (-) s'il s'agit d'un fichier ordinaire, d 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. On constatera ici la distinction faite entre les différents types d'utilisateur pour un même fichier : les trois premiers caractères représentent les droits octroyés à l'utilisateur propriétaire, les trois suivants s'appliquent à tout utilisateur du groupe qui n'est pas le propriétaire, et les trois derniers aux autres ; un tiret (-) signifie que le droit n'est pas octroyé ;
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 numéro d'inœud), 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 ;
viennent ensuite le nom de l'utilisateur propriétaire du fichier et le nom du groupe propriétaire ;
enfin sont affichés la taille du fichier (en octets) 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.
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 :
les trois premiers (rw-) sont les droits accordés à l'utilisateur propriétaire de ce fichier, en l'occurrence reine. L'utilisateur reine peut donc lire le fichier (r), le modifier (w) mais ne peut pas l'exécuter (-) ;
les trois suivants (r--) sont concédés à tout utilisateur qui n'est pas reine mais qui appartient au groupe users : il pourra lire le fichier (r), mais ne pourra ni le modifier ni l'exécuter (--) ;
les trois derniers (---) s'appliquent à tout utilisateur qui n'est pas reine et qui n'appartient pas au groupe users : un tel utilisateur n'a tout simplement aucun droit sur ce fichier.
Pour le répertoire un_répertoire, les droits sont rwxr-xr--, et donc :
pierre, en tant que propriétaire du répertoire, peut en lister le contenu (r), peut ajouter des fichiers dans ce répertoire ou en supprimer (w), et il peut traverser ce répertoire (x) ;
tout utilisateur qui n'est pas pierre mais qui appartient au groupe users pourra lister le contenu de ce répertoire (r) mais ne pourra pas y ajouter des fichiers (-) ; par contre, il aura le droit de le traverser (x) ;
tout autre utilisateur ne pourra que lister les fichiers de ce répertoire (r), mais c'est tout. Il sera incapable de le traverser.
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 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 :
un nom de fichier peut comporter n'importe quel caractère (à l'exception du caractère ASCII 0, qui dénote la fin d'une chaîne de caractères, et /, qui est le séparateur de répertoires), même des caractères non imprimables. De plus, UNIX est sensible à la casse : les fichiers readme et Readme sont différents, car r et R sont deux caractères distincts sous UNIX ;
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 GNU/Linux. D'ailleurs, il en va de même sur tous les systèmes d'exploitation. Cependant, ces « extensions » ainsi nommées sont toujours très pratiques. Le caractère point (.) sous UNIX n'est qu'un caractère comme les autres. Notons que les noms de fichier commençant avec un point sous UNIX sont des « fichiers cachés ».
Page précédente | Début | Page suivante |
Concepts de base des systèmes UNIX | Remonter | Les processus |