Architecture et gestion du système de fichiers sous Linux

Dans l'écosystème Linux, le concept fondamental est que tout est traité comme un fichier. Qu'il s'agisse d'un document texte, d'un répertoire, d'un clavier ou d'un processus, le système interagit avec ces éléments via l'interface du système de fichiers.

Typologie des fichiers

Bien que la majorité des éléments soient des fichiers réguliers, Linux distingue plusieurs catégories identifiables via la commande ls -l. Le premier caractère de chaque ligne indique la nature de l'élément :

Caractère Type de fichier Description
- Fichier régulier Données binaires, textes, images, exécutables.
d Répertoire Un conteneur regroupant d'autres fichiers.
l Lien symbolique Un pointeur vers un autre chemin de fichier.
c / b Périphérique Interface matérielle (caractère ou bloc).
s Socket Interface de communication réseau/inter-processus.
p Tube (Pipe) Canal de communication entre processus.
# Exemple de sortie ls -lh
-rw-r--r-- 1 utilisateur admin 2.4K May 10 14:20 script.py
drwxr-xr-x 2 utilisateur admin 4.0K May 11 09:00 documents
lrwxrwxrwx 1 utilisateur admin   15 May 12 10:30 config_link -> /etc/config

Organisation des partitions et points de montage

Le partitionnement sous Linux permet de segmenter l'espace disque pour accroître la sécurité et la stabilité. En isolant des répertoires comme /home ou /var sur des partitions distinctes, on évite qu'une saturation des données utilisateurs ou des fichiers de log ne bloque l'intégralité du système.

Le système utilise principalement deux types de partitions :

  • Partitions de données : Stockent les fichiers système et utilisateurs (formatées en ext4, XFS, etc.).
  • Partition de Swap : Sert d'extension à la mémoire vive (RAM) en utilisant l'espace disque lorsque la mémoire physique est saturée.

L'intégration des partitions dans l'arborescence unique s'effectue via des points de montage. La commande df -h permet de visualiser cette structure :

$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda1          40G     15G   23G  40% /
/dev/sdb1         100G     20G   75G  22% /home
tmpfs             3.9G       0  3.9G   0% /dev/shm

La Hiérarchie Standard (FHS)

L'arborescence Linux commence par la racine /. Voici les répertoires les plus critiques :

  • /bin et /sbin : Binaires essentiels pour le démarrage et l'administration.
  • /etc : Ficihers de configuration du système.
  • /dev : Accès aux périphériques matériels.
  • /var : Données variables (journaux système, bases de données).
  • /tmp : Fichiers temporaires (souvent effacés au redémarrage).
  • /home : Espaces personnels des utilisateurs.
  • /proc : Système de fichiers virtuel exposant l'état du noyau et des processus.

Navigation et chemins d'accès

Il existe deux méthodes pour localiser un fichier :

  • Chemin absolu : Part de la racine (ex: /var/log/syslog).
  • Chemin relatif : Part du répertoire actuel (ex: ../images/photo.png).

La variable d'environnement $PATH définit les répertoires dans lesquels le système cherche les exécutables lorsque vous tapez une commande.

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games

Manipulation des fichiers et répertoires

Création et déplacement

Utilisez mkdir pour créer des dossiers et cp ou mv pour copier ou déplacer des éléments.

# Création d'une structure récursive
$ mkdir -p projets/python/source

# Déplacement et renommage
$ mv ancien_nom.txt projets/python/source/nouveau_nom.py

# Copie d'un répertoire entier
$ cp -r projets/ backup_projets/

Recherche de contenu

Pour localiser des fichiers ou filtrer du texte, les outils find et grep sont indispensables.

# Trouver tous les fichiers .log de plus de 10Mo dans /var
$ find /var/log -name "*.log" -size +10M

# Rechercher une chaîne de caractères dans un fichier
$ grep "ERROR" /var/log/apache2/error.log

Gestion des liens

Linux propose deux types de liens :

  • Lien physique (Hard link) : Partage le même numéro d'index (inode) que le fichier original. Il est impossible de distinguer l'original du lien.
  • Lien symbolique (Soft link) : Un petit fichier contenant le chemin vers la cible. Si le fichier source est supprimé, le lien devient "mort".
# Création d'un lien symbolique
$ ln -s /chemin/vers/source lien_symbolique

Sécurité et permissions

Chaque fichier possède un propriétaire, un groupe et des droits d'accès pour trois catégories : propriétaire (u), groupe (g) et autres (o).

Les droits sont : r (lecture), w (écriture), x (exécution).

Modification des droits avec chmod

On peut utiliser la notation symbolique ou octale (r=4, w=2, x=1).

# Accorder l'exécution au propriétaire
$ chmod u+x script.sh

# Droits 755 (rwxr-xr-x) : tout pour le proprio, lecture/exécution pour les autres
$ chmod 755 mon_dossier

Changement de propriétaire

La commande chown modifie l'appartenance d'un fichier (nécessite souvent les droits root).

# Changer le propriétaire et le groupe
$ sudo chown utilisateur:groupe fichier.txt

Le concept de l'Umask

L'umask définit les permissions par défaut lors de la création d'un fichier. C'est un masque qui "soustrait" des permissions aux droits maximaux (666 pour les fichiers, 777 pour les dossiers).

$ umask
0022
# Un nouveau dossier aura les droits 755 (777 - 022)
# Un nouveau fichier aura les droits 644 (666 - 022)

Étiquettes: Linux filesystem bash permissions sysadmin

Publié le 10 juillet à 21h45