Sommaire :
I. Le système de fichiers Linux
II. L’arborescence standard des dossiers Linux
III. Comment naviguer dans le système de fichier ?
I. Le système de fichiers Linux
Un système de fichiers est un système permettant d’organiser et de classer ses fichiers sur un support de stockage (comme un disque dur). Il permet de gérer l’écriture, la lecture, la modification et la suppression de ces fichiers. Chaque système d’exploitation possède son propre système de fichiers, et Linux n’échappe pas à la règle.
Linux possède une structure de système de fichiers basée sur celle d’UNIX. Cela signifie que Linux organise ses fichiers selon une structure hiérarchique, partant du répertoire racine, représenté par un “/”.
Depuis le répertoire racine démarre l’arborescence des fichiers et des dossiers (répertoire = dossier). Chaque dossier a au minimum un dossier parent, à l’exception du répertoire racine, qui est le parent le plus élevé de tous les dossiers et fichiers.
Lorsque vous installez Linux, vous vous retrouvez toujours avec les mêmes dossiers enfants du répertoire racine. Chaque dossier a son utilité et stocke des fichiers spécifiques.
Cette structure permet une organisation logique et standardisée des fichiers et des répertoires, ce qui facilite l'administration et l'utilisation du système Linux.
Il est important de se familiariser avec cette organisation pour retrouver facilement ses fichiers sans se compliquer la vie.
Le système de fichiers définit également les conventions de dénomination des fichiers, ainsi que leurs métadonnées, comme leur taille, leur date de création, et d’autres informations.
Et surtout, il gère le contrôle d’accès !
Eh oui, mesdames et messieurs, il est possible de restreindre l’accès à des fichiers ou à des répertoires pour certains utilisateurs. On peut restreindre l’accès en lecture, en écriture et en exécution.
C’est un mécanisme de sécurité basique mais très important.
Imaginez que vous lanciez un serveur Linux où plusieurs personnes peuvent se connecter. Vous n’aimeriez pas que n’importe quel utilisateur puisse accéder à tous les fichiers et dossiers du serveur. Il pourrait potentiellement supprimer ou modifier des fichiers, installer des programmes malveillants, ou récupérer des informations sensibles.
Un autre exemple : lorsque vous installez un programme sur votre machine, vous n’avez pas envie que ce programme puisse lire ou supprimer tous vos fichiers et dossiers.
Le mécanisme de contrôle d’accès via les permissions permet donc de se prémunir de ces risques en gérant quels utilisateurs ont le droit de faire quoi.
II. L’arborescence standard des dossiers Linux
Revenons à l’organisation de nos dossiers et fichiers. Voici la structure basique du système de fichiers Linux :
Les principaux dossiers et leur utilité :
1) Dossiers système essentiels
/bin : Contient les exécutables binaires des commandes essentielles utilisables par tous les utilisateurs, comme
ls
,cd
, oucat
./etc : Contient les fichiers de configuration du système et des programmes.
/lib : Abrite les bibliothèques partagées essentielles et les modules du noyau.
/sbin : Stocke les exécutables système essentiels et les fichiers binaires spécifiques à l’administration.
Quelle est la différence entre /bin et /sbin ?
Sous Linux, le dossier /bin contient les exécutables essentiels utilisables par tous les utilisateurs, comme ls
ou cp
, nécessaires au fonctionnement quotidien. En revanche, /sbin est réservé aux exécutables critiques pour l’administration système, tels que init
ou shutdown
, qui nécessitent généralement des privilèges particuliers. Bien que cette distinction ait une origine historique, elle tend à s’estomper. Certaines distributions envisagent même leur unification pour simplifier la gestion des systèmes.
2) Dossiers de démarrage et d'exécution
/boot : Stocke les fichiers nécessaires au démarrage de Linux, y compris les fichiers de configuration et le noyau.
/run : Contient des informations relatives au système concernant les utilisateurs et les services en cours d'exécution depuis le démarrage du système. Les données stockées dans ce répertoire ne persistent pas après un redémarrage.
3) Dossiers pour les utilisateurs
/home : Contient les répertoires personnels des utilisateurs.
/root : Répertoire personnel de l'utilisateur root (super-utilisateur).
4) Dossiers pour les périphériques et le montage
/dev : Contient les fichiers spéciaux représentant les périphériques du système, comme les disques durs.
/media : Point de montage pour les médias amovibles les CD.
/mnt : Point de montage temporaire pour les systèmes de fichiers. Ce montage est temporaire car il ne persiste pas après le redémarrage de l'ordinateur.
Qu’est-ce qu’un point de montage ?
Un point de montage est un répertoire dans l'arborescence du système de fichiers où un système de fichiers distinct est attaché, rendant son contenu accessible aux utilisateurs. C'est essentiellement un emplacement permettant d'accéder au contenu d’un périphérique de stockage, comme un disque dur, une clé USB ou un lecteur DVD.
5) Dossiers pour les données variables
/var : Stocke les données variables comme les logs ou les fichiers de stockage de bases de données. Par exemple, le répertoire par défaut pour stocker les fichiers de données de PostgreSQL (une base de données relationnelle très connue) est
/var/lib/pgsql/data
./tmp : Contient les fichiers temporaires utilisés par les applications, tels que :
Des fichiers de travail pour les éditeurs de texte : lorsque vous éditez un document, l'application peut créer une copie temporaire dans
/tmp
pour sauvegarder les modifications en cours.Des téléchargements partiels : les navigateurs web peuvent stocker des fichiers partiellement téléchargés dans
/tmp
avant de les déplacer vers le dossier de téléchargement final.
6) Dossiers système spéciaux
/proc : Système de fichiers virtuel contenant des informations sur l'état du noyau et des processus.
/sys : Contient des informations sur les périphériques, pilotes et certaines fonctionnalités du noyau.
Quelle est la différence entre /proc et /sys ?
Même si les deux semblent similaires, ils ont des objectifs différents, liés à l’histoire du développement de Linux.
/proc et /sys sont des systèmes de fichiers virtuels résidant en mémoire (dans la RAM) et ne correspondant à aucun périphérique physique.
Le répertoire /proc a été le premier à être créé. Il était initialement destiné à fournir des informations internes sur les processus (d’où son nom) à l’utilisateur. Ce système, appelé procfs (Process File System), expose également des données internes du noyau, comme des informations sur le réseau, le matériel, le processeur ou les périphériques de stockage.
Cependant, l’absence de normes pour structurer ces informations dans /proc a conduit à un certain désordre. Certains développeurs regroupaient toutes les données dans un seul fichier, tandis que d'autres les divisaient en plusieurs fichiers.
Pour remédier à ce problème, les développeurs du noyau Linux ont créé sysfs, monté sur /sys, pour structurer ces informations de manière standardisée. Avec sysfs, des règles strictes sont imposées sur la présentation des données, souvent gérées directement par le noyau, garantissant ainsi une uniformité.
En résumé :
/proc était initialement conçu pour les informations sur les processus, mais est devenu un "fourre-tout" pour toutes sortes de données internes.
/sys a été créé pour exposer ces informations de manière structurée et standardisée.
Par souci de compatibilité, les données déjà exposées dans /proc doivent y rester indéfiniment, mais les nouvelles informations doivent suivre les règles de sysfs et être ajoutées à /sys.
7) Dossiers pour les applications et ressources
/usr : Contient les programmes "officiels" de votre système Linux. Par exemple, dans le dossier /usr/bin, vous pouvez retrouver le programme Firefox, souvent inclus automatiquement avec les distributions Ubuntu. Dans /usr/lib, vous trouverez des fichiers nécessaires au fonctionnement de ces programmes.
/opt : Destiné à l’installation d’applications supplémentaires que vous choisissez d’installer. Par exemple, /opt/google/chrome pourrait contenir le navigateur Google Chrome si vous l’avez installé manuellement.
8) Le reste des dossiers
/srv : Le terme /srv signifie "service". Ce répertoire est utilisé pour stocker les données spécifiques à divers services, comme les fichiers des comptes FTP ou les pages de sites web.
/lost+found : C’est un répertoire principalement présent dans Ubuntu et les distributions basées sur Ubuntu. C’est un répertoire spécial qui contient des données obsolètes. Ce sont des fragments de fichiers qui ont été soit supprimés, soit perdus lors des opérations sur le disque.
/lib32, /lib64 : Ce sont des répertoires similaires à /lib, mais destinés respectivement aux systèmes 64 bits et parfois 32 bits. Dans certaines configurations, on trouvera /lib et /lib32 : dans ce cas, /lib correspond aux fichiers 64 bits et /lib32 aux fichiers 32 bits.
III. Comment naviguer dans le système de fichier ?
Pour situer un fichier ou un dossier dans le système de fichiers Linux, nous explicitons son chemin. Le chemin est simplement la suite de répertoires parents depuis un certain point.
Il convient de différencier les chemins absolus des chemins relatifs.
Un chemin absolu commence par "/" et indique l'emplacement complet depuis la racine du système, valide partout (ex : /home/user/file.txt). Le chemin relatif dépend du répertoire courant, ne commence pas par "/" et est plus court (ex : documents/file.txt).
Le chemin absolu est unique et précis, tandis que le chemin relatif est contextuel et souvent plus pratique à utiliser.
Par exemple, plus tard dans la formation, nous utiliserons des chemins relatifs pour nos projets Python. En effet, à priori, vous allez stocker vos projets dans votre répertoire utilisateur, et celui-ci varie d’un utilisateur à l’autre (heureusement, nous ne nous appelons pas tous pareil). Ainsi, au lieu de mettre /home/florent/mon_projet/mon_fichier_python
, nous partirons plutôt du répertoire du projet pour référencer notre fichier Python : ./mon_projet/mon_fichier_python
ou mon_projet/mon_fichier_python
(le préfixe ”./”
et ne rien mettre sont équivalents pour les chemins relatifs, ”.”
désigne le répertoire courant).
Navigation et exploration
pwd
: Affiche le chemin du répertoire courantcd
: Change de répertoirecd ~
: Va dans le répertoire personnelcd /
: Va à la racine du systèmecd ..
: Remonte d'un niveau dans l'arborescencecd -
: Retourne au répertoire précédent
ls
: Liste les fichiers/dossiersls -l
: Affichage détailléls -a
: Affiche les fichiers cachésls -h
: Taille des fichiers lisiblels -lh
: Combinaison affichage détaillé et taille lisible
Recherche de fichiers
find
: Recherche des fichiersRecherche un fichier dans le répertoir courant :
find . -name "fichier.txt"
Note : La recherche est sensible à la casse par défaut. Si vous cherchez un fichier nommé
FICHIER.TXT
(tout en majuscules), cette commande ne le trouvera pas.Si vous souhaitez rendre la recherche insensible à la casse, vous pouvez utiliser l'option
-iname
au lieu de-name
:find . -iname "fichier.txt"
Recherche un dossier depuis le répertoire racine :
find / -type d -name "dossier"
Ces commandes vous permettront de naviguer efficacement dans le système de fichiers Linux.
Très bon contenu Florent ! Ça donne envie de voir la suite ;)