Système de fichiers, utilisateurs et gestion des droits

Système de fichiers

Le système de fichiers désigne la façon d’organiser les données sur un support de stockage physique.

Sous GNU/Linux, le système de fichiers est une arborescence dont la racine est / (root), et qui contient des répertoires.

L’organisation des répertoires varie selon les distributions, mais on retrouve souvent la même chose :

  • /bin contient les binaires (les exécutables)
  • /boot contient le noyau et les fichiers de démarrage
  • /dev contient les points de montage des périphériques
  • /etc contient les fichiers de configuration du système
  • /home contient les répertoires personnels de chacun des utilisateurs
  • /lib contient les bibliothèques (libraires)
  • /root est le répertoire du super-utilisateur (admin) root
  • /usr contient les programmes accessibles aux utilisateurs
  • /var contient des données de fonctionnement, dont les logs des différents services.

On parle d’arborescence de fichiers car le système de fichier a une racine unique et contient des répertoires qui peuvent eux-mêmes contenir d’autres répertoires ou des fichiers... ce qui constitue un arbre de contenu (c’est tout à fait classique et c’est comme le système de fichiers sous Windows).

On distingue deux façons d’accéder à un fichier ou à un répertoire : en utilisant son chemin relatif ou son chemin absolu.

Le chemin relatif est exprimé depuis le répertoire où l’on se trouve, tandis que le chemin absolu est exprimé depuis la racine du système de fichiers, et commence donc par /. De plus, le . désigne le répertoire courant, tandis que .. désigne le répertoire parent.

Le répertoire ~ est le répertoire d’accueil de l’utilisateur connecté. Par exemple, si l’utilisateur s’appelle bb8, son répertoire ~ sera très probablement /home/bb8/.

On appelle répertoire courant le répertoire dans lequel on se trouve à un moment donné. Son raccourci est .. Pour connaître le chemin absolu du répertoire courant, il suffit de taper la commande pwd``(*print name of working directory*). À chaque fois que l'on se déplace avec la commande ``cd, on change de répertoire courant.

Il est essentiel de savoir se déplacer dans une arborescence en utilisant les chemins relatifs tout autant que les chemins absolus. Voyez les exercices pour vous familiariser avec cela.

Utilisateurs

GNU/Linux permet de gérer des utilisateurs qui ont tous un login (texte) et un UID (user ID, numéro).

Les utilisateurs peuvent appartenir à des groupes qui ont également un nom (texte) et un GID (group ID, numéro).

Un utilisateur peut appartenir à plusieurs groupes, et un groupe peut bien entendu contenir plusieurs utilisateurs.

Chaque utilisateur possède un répertoire, souvent appelé HOME, qui se trouve dans le répertoire /home sur système de fichiers.

Le super-utilisateur, appelé root est celui qui a tous les droits sur l’administration du système. Certaines actions ne peuvent être exécutées que par le super-utilisateur... ou par un utilisateur standard s’il a les privilèges nécessaires, en utilisant avec prudence la commande sudo. Cette commande permet en effet, si l’on y est autorisé, d’exécuter un processus en tant que root.

Gestion des droits

Chaque fichier ou répertoire appartient à un utilisateur et un seul, ainsi qu’à un groupe et un seul.

Pour chaque fichier et chaque répertoire, on peut définir des permissions pour l’utilisateur, le groupe, et le reste du monde (le reste du monde caractérisant tous les utilisateurs qui ne sont pas l’utilisateur propriétaire, et qui n’appartiennent pas non plus au groupe propriétaire).

En résumé, des droits sont affectés pour :

  • le propriétaire du fichier (u, pour user)
  • le groupe auquel le fichier appartient (g, pour group)
  • les autres utilisateurs de la machine (o, pour other)

Pour chaque fichier ou répertoire, on peut définir des permissions de trois types différents :

  • lecture (r, pour read)
  • écriture (w, pour write)
  • exécution (x, pour execute)

Le droit en exécution est un peu particulier. Sur un fichier, mettre un droit d’exécution signifie que l’on donne le droit d’exécuter le programme qu’il contient. Pour un répertoire, mettre le droit en exécution signifie que l’on autorise à parcourir ce répertoire.

Pour afficher les droits associés aux fichiers et aux répertoires, il faut utiliser la commande ls -l.

Pour attribuer et modifier les permissions, on utilise la commande chmod. Il existe deux façons d’utiliser chmod :

  • Soit en utilisant le mode classique, de la forme ugoa+-=rwx (*user, group, other, all, read, write, execute)

  • Soit en utilisant la forme octale, qui consiste à préciser les trois valeurs (les centaines pour u, les dizaines pour g et les unités pour o) de la façon suivante :
    • 0 aucun droit
    • 1 exécution seule
    • 2 écriture seulement
    • 3 exécution + écriture
    • 4 lecture seulement
    • 5 lecture +exécution
    • 6 lecture + écriture
    • 7 tous les droits

Par défaut, les permissions sur les fichiers créés sont fixées à 666 et sur les répertoires à 777.

Pour changer le propriétaire d’un fichier, on utilise la commande chown et pour changer son groupe, la commande chgrp.

Voyons tout cela plus en détails avec les exercices.