| Linux-Mandrake: Guide d'installation; Guide de l'utilisateur | ||
|---|---|---|
| Page précédente | Chapitre 9. Quelques concepts de base d'Unix | Page suivante |
Les fichiers sont un autre domaine où Linux diffère totalement de Windows. Nous ne verrons ici que les différences immédiatement visibles.
La première différence, et sans doute la plus importante, est justement liée à la présence d'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 de ses fichiers au sens propre du terme.
De plus, des droits sont associés à chaque fichier, que seul l'utilisateur propriétaire peut modifier. Ces droits distinguent trois catégories d'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, et enfin 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 au nombre de trois :
Droit de lecture (r pour Read, lire) Pour un fichier, cela autorise à en lire le contenu. Pour un répertoire, cela autorise à lister les fichiers contenus dans ce répertoire, si et seulement si le droit d'exécution sur ce répertoire est positionné également;
Droit d'écriture (w pour Write, écrire) Pour un fichier, cela autorise à en modifier le contenu. Pour un répertoire, cela autorise à créer des fichiers et à en effacer, même si l'on n'est pas le propriétaire de ces fichiers;
Droit d'exécution (x pour eXecute, exécuter) Pour un fichier, cela en autorise l'exécution (par conséquent, seuls les fichiers exécutables ont normalement ce droit positionné). Pour un répertoire, cela autorise l'utilisateur à le traverser (c'est-à-dire de s'y rendre ou de 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 en déposséder (changer l'utilisateur propriétaire). Bien sûr, si vous vous en dépossédez, vous perdrez tous vos droits dessus...
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 francis users 0 jui 8 14:11 un_fichier drwxr-xr-- 2 gael users 1024 jui 8 14:11 un_répertoire/ $ |
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 régulier, d si le fichier est un répertoire. Il existe d'autres types de fichiers, qui seront abordés dans le Manuel de référence. Les neuf traits qui suivent représentent les droits associés au fichier. Vous pouvez voir ici la séparation qui est faite entre les différents types d'utilisateurs pour un même fichier : les trois premiers représentent les droits associé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 s'appliquent aux autres; un trait (-) signifie que le droit n'est pas positionné;
vient ensuite le nombre de liens du fichier : nous verrons en effet dans le Manuel de référence que les fichiers sont identifiés de façon unique 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 dans le Manuel de référence;
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 sa date de dernière modification.
Observons maintenant en détail les droits associés à chacun de ces fichiers : il faut tout d'abord enlever le premier caractère, qui désigne le type, et ainsi pour le fichier un_fichier nous nous retrouvons avec les droits : rw-r-----. L'interprétation de ces droits est la suivante :
les trois premiers (rw-) sont les droits de l'utilisateur propriétaire de ce fichier, en l'occurrence francis. L'utilisateur francis a donc le droit de lire le fichier (r), de le modifier (w) mais pas de l'exécuter (-);
les trois suivants (r--) s'appliquent à tout utilisateur qui n'est pas francis mais qui appartient au groupe users : il pourra lire le fichier (r), mais ne pourra ni écrire dedans ni l'exécuter (--);
les trois derniers (---) s'appliquent à tout utilisateur qui n'est pas francis 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 :
gael, 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 gael mais appartient au groupe users pourra lister le contenu de ce répertoire (r) mais ne pourra pas y rajouter des fichiers (-), et il aura 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 positionné, le droit d'exécution ne l'est pas (r--).
Attention! Il existe une exception à la règle, et de taille : root, encore lui, 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 pas le droit de lecture, traverser des répertoires qui ne lui sont normalement pas accessibles, et ainsi de suite. Et si un droit lui manque vraiment, il lui suffit de se l'offrir...
Pour finir, il est bon 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. Une conséquence est 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 différents;
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, et c'est aussi le cas sous Windows : essayez de changer l'extension d'un fichier et observez...
| Page précédente | Début | Page suivante |
| Quelques concepts de base d'Unix | Remonter | Les processus |