Acte V-III : Organisation des données - droits d'accès, liens et i-node

Protection des fichiers

Lors de l'utilisation d'un système informatique en réseau, il paraît important de considérer les droits qu'ont les autres utilisateurs du système par rapport à vos fichiers. En effet, dans bien des cas, on ne voudrait pas que les gens puissent modifier nos fichiers. Par contre on peut tout à fait envisager le fait de vouloir les faire lire à un ensemble de personnes. Unix nous permet de dissocier les droits en écriture (w), lecture (r) et exécution (x) vis-à-vis de trois groupes différents: le propriétaire (u), le groupe auquel il appartient, à l'exception de lui-même (g) et enfin les autres (o).
Les trois espaces de protection sont disjoints, ainsi, si le fichier en cause n'est pas en autorisation d'exécution pour le propriétaire mais est en autorisation d'éxécution pour les autres, le propriétaire ne peut exécuter son fichier.

Voir les droits d'un fichier

On peut obtenir l'ensemble des renseignements sur un fichier ou sur un répertoire en utilisant l'option -l de la commande ls et en spécifiant le fichier pour lequel vous voulez connaître les droits (si vous ne spécifiez pas de fichier, vous obtiendrez ces informations pour tous les fichiers du répertoire), i.e. vous utilisez la commande :
ls -l nom_de_fichier
Vous obtenez une ligne donnant une série d'informations sur le fichier du type :
-rw-r--r--    1 klimann  institut     966 aoû 30 18:09 toto
En particulier, tout d'abord, vous aurez une chaîne de dix caractères. Le premier caractère donne le type de fichier. Ensuite, les neufs caractères restant peuvent être décomposés en trois groupes de trois caractères. Le premier groupe concerne les droits du propriétaire du fichier sur ce fichier, le deuxième ceux du groupe auquel appartient le propriétaire du fichier et enfin le troisième les droits de tous les autres utilisateurs. Selon les lettres qui apparaissent dans ces groupes, on connaît alors les droits sur le fichier.
Sur l'exemple donné plus haut, on voit que le fichier toto est autorisé en lecture et en écriture pour son propriétaire, klimann en l'occurence et juste en lecture aussi bien pour son groupe, institut dans ce cas, que pour les autres.

Exercices

Modifier les droits sur un fichier


Pour modifier les droits sur un fichier (toute méthode décrite ici convient aussi pour les répertoires), il est nécessaire de posséder les droits d'exécution dans le répertoire contenant le fichier pour effectuer cette modification.
On modifie les droits d'un fichier en se servant de la commande chmod. La syntaxe de cette commande est:
chmod nouveau_mode nom_de_fichier
On peut exprimer le nouveau mode de deux manières: la manière symbolique et la manière absolue.

Exercices

Fichiers, i-nodes et liens


Le disque dur est partagé en blocs physiques de 512 octets en général ce qui permet de stocker 512 caractères de texte par exemple. Pour différentes raisons ces blocs physiques sont regroupés en blocs logiques par 2, 4 ou 8.
Un bloc logique fait donc 1ko, 2ko voir 4 ko. Nous supposerons dans la suite que le système utilisé a des blocs logiques de 2 ko.
Ainsi on ne peut stocker un fichier supérieur à 2 ko dans un bloc. Donc un fichier est regroupé sur plusieurs blocs logiques. Pour un fichier donné la liste des blocs logiques sur lesquels il est enregistré est mise dans une structure de données appelée i-node.
Un i-node contient outre ces adresses, le type et le mode d'accès du fichier (rwx), le nombre de référenciation de cet i-node, le propriétaire du fichier, le groupe auquel le fichier appartient, la date de création, de dernière modification et de dernier accès au fichier. Il comprend également la taille du fichier et le nombre de blocs physiques utilisés par le fichier. Le nom du fichier n'étant pas unique, il n'est pas stocké dans l'i-node.
Un répertoire est traité comme un fichier, c'est à dire qu'il possède aussi un i-node, et les données de ce répertoire sont en réalité l'ensemble des noms de fichiers qu'il contient associé à un numéro d'i-node.
Par convention l'i-node numéro 2 est réservé au répertoire racine qui n'est contenu dans aucun autre répertoire.

Exercice

Créez par exemple un fichier que vous appellerez toto. Ensuite, regardez les informations du fichiers à l'aide de la commande ls -il. Vous devriez obtenir une ligne avec en premier le numéro d'i-node correspondant à vote fichier puis les informations contenues dans cet i-node à savoir : Sur le fichier toto d'exemple, on obtient :
448779 -rw-r--r--    1 klimann  institut      966 aoû 30 18:09 toto
Maintenant tapez la commande ln -s toto titi et regardez à nouveau vos fichiers. Vous remarquez qu'un fichier titi a été créé de type lien (l) et que ce fichier pointe vers toto. Modifiez le fichier titi. Est-ce que toto a changé ?
Vous venez de créer un lien symbolique.

Tapez ensuite la commande ln toto tete. Regardez à nouveau la liste de vos fichiers. Faites attention au nombre de liens et aux numéros d'i-node.
Maintenant modifiez tete et regardez les changements pour toto et titi. Effacez le fichier toto. Regardez le contenu de titi et de tete. Avez-vous réellement effacé le fichier ?
Si non, que faut-il faire pour effacer le fichier du disque ?
Vous venez de construire un lien hard.