Linux-Mandrake: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 2. Quelques concepts de base d'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 immédiatement visibles. Si vous le souhaitez, vous pouvez lire le chapitre Le système de fichiers de GNU/Linux: ext2fs (EXTended 2 FileSystem), qui approfondit ce sujet.
La première différence, et sans doute la plus importante, est justement liée à la présence de multi-utilisateurs. Nous aurions pu dire en transition que chaque utilisateur possède son propre répertoire (appelé répertoire personnel, ou home en anglais), mais cela n'explicite qu'une partie de ce qui se passe vraiment, à savoir que tout fichier, sur un système Unix, est la propriété exclusive d'un utilisateur et d'un groupe. Ainsi, chaque utilisateur a bien son répertoire personnel, mais il est de plus le propriétaire , au sens propre du terme, de ses fichiers.
De plus, des droits sont associés à chaque fichier, que seul l'utilisateur propriétaire peut modifier. Il existe trois catégories de droits selon le statut des utilisateurs : le propriétaire même du fichier, tous les utilisateurs membres du groupe auquel ce fichier est associé (on dit aussi le groupe propriétaire) mais qui n'est pas l'utilisateur propriétaire proprement dit ; et enfin tous les autres, c'est-à-dire tout utilisateur qui n'est ni le propriétaire du fichier ni membre du groupe propriétaire. Ces droits sont eux-mêmes répartis en trois catégories :
Droit de lecture (r pour Read, lire) : autorise la lecture du contenu d'un fichier et le listage des fichiers contenus dans un répertoire, si et seulement si le droit d'exécution sur ce répertoire a été également accordé;
Droit d'écriture (w pour Write, écrire) : autorise la modification du contenu d'un fichier et, sur un répertoire, la création et la suppression des fichiers, même si l'on n'est pas le propriétaire de ces fichiers;
Droit d'exécution (x pour eXecute, exécuter) Dans le cas d'un fichier, l'exécution est octroyée ; par conséquent, seuls les fichiers exécutables obtiennent normalement l'octroi de ce droit. Pour un répertoire, cela autorise l'utilisateur à le traverser (c'est-à-dire à s'y rendre ou à se rendre dans l'un de ses répertoires fils).
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, et interdire toute autre utilisation du fichier. 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 même changer le groupe propriétaire (si et seulement si vous êtes aussi membre du nouveau groupe), voire vous déposséder entièrement des droits de l'utilisateur propriétaire !
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 a_file drwxr-xr-- 2 darth users 1024 Jul 8 14:11 a_directory/ $ |
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 désigne le type du fichier : il ne contient rien (-) s'il s'agit d'un fichier ordinaire, d si le fichier est un répertoire (les autres types de fichiers seront abordés plus loin). Les neuf traits qui suivent représentent les droits apposés pour l'accès au fichier. On constatera ici la distinction faite entre les différents types d'utilisateurs pour un même fichier : les trois premiers 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 trait (-) signifie que le droit n'est pas octroyé;
vient ensuite le nombre de liens du fichier : nous verrons en effet plus loin, que les fichiers sont différenciés non pas par leur nom, mais par un numéro (leur numéro d'i-nœud), et par conséquent il est possible sous Unix qu'un seul et même fichier sur disque possède plusieurs noms. Pour un répertoire, le nombre de liens a une signification particulière, que nous aborderons également 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 la dernière modification qu'il a subie.
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-----. C'est-à-dire :
les trois premiers (rw-) sont les droits accordés à l'utilisateur propriétaire de ce fichier, en l'occurrence reine. L'utilisateur reine peut lire le fichier (r), le modifier (w) mais 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 en écriture 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 :
darth, en tant que propriétaire du répertoire, peut en lister le contenu (r), peut ajouter des fichiers dans ce répertoire ou en ôter (w), et il peut traverser ce répertoire (x);
tout utilisateur qui n'est pas darth mais appartient au groupe users pourra lister le contenu de ce répertoire (r) mais ne pourra pas y ajouter des fichiers (-) ; il aura par contre le droit de le traverser (x);
tout autre utilisateur n'aura en fin de compte aucun droit sur le répertoire : nous avons vu que le droit de lecture seule sur un répertoire n'autorisait même pas à en lister le contenu, car bien que le droit de lecture soit accordé, le droit d'exécution, lui, ne l'est pas (r--).
Attention! Il existe une exception à la règle, et de taille : le compte root peut changer les attributs (droits, utilisateur et groupe propriétaires) de tous les fichiers, même s'il n'en est pas le propriétaire. Ce qui veut dire qu'il peut aussi s'en donner la propriété. Il peut lire des fichiers sur lesquels il n'a aucun droit de lecture, traverser des répertoires qui ne lui sont normalement pas accessibles, et ainsi de suite. Et si un droit lui fait vraiment défaut, il peut tout simplement se l'octroyer.
Pour conclure ici, il est important de mentionner une autre différence, qui n'est pas négligeable : elle se situe au niveau des noms des fichiers. En effet, ils sont beaucoup moins limités que sous Windows :
ils peuvent contenir n'importe quel caractère (sauf le caractère nul et /) , même des caractères non imprimables. Ceci a pour conséquence, qu'il faut faire attention à la capitalisation (ou casse) des noms de fichiers : dans un même répertoire, readme et Readme sont deux fichiers différents, car r et R sont deux caractères distincts;
comme vous aurez pu le remarquer également, un nom de fichier ne comporte pas d'extension, si ce n'est par convention; une extension ne caractérise pas (et n'a jamais caractérisé) le contenu d'un fichier, comme cela peut être le cas dans d'autres systèmes d'exploitation.
Page précédente | Début | Page suivante |
Quelques concepts de base d'Unix | Remonter | Les processus |