Hiérarchies des fichiers
Fichiers système
En utilisant la commande tree (souvent installé par défaut), on visualise tous les dossiers d'une distribution Ubuntu présent à la racine (/) du système :
$ tree -d -L 1 /
/
├── bin -> usr/bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
└── var
Cette arborescence peut changer selon la distribution ou le type de Linux utilisé :
Sur une Debian de l'ecm
Sur une Debian de l'ecm
fbrucker@roucas100:~$ tree -d -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── donnees
├── etc
├── home
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── lost+found
├── media
├── mnt
├── net
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── users
├── usr
└── var
26 directories
Sur un mac
Sur un mac
Les différents types de Linux, voir même différentes distributions vont avoir une architecture différentes. Cependant, les grands découpages restent identiques. Par exemple sur un mac :
❯ tree -d -L 1 /
/
├── Applications
├── bin
├── cores
├── dev
├── etc -> private/etc
├── home -> /System/Volumes/Data/home
├── Library
├── opt
├── private
├── sbin
├── System
├── tmp -> private/tmp
├── Users
├── usr
├── var -> private/var
└── Volumes
17 directories
Mais vous retrouverez très souvent les même informations partout :
/: racine de tout/bin: programmes essentiels/boot: contient les fichiers nécessaires pour démarrer la machine, en particulier le noyau/dev: les périphériques comme les sorties écrans, audio, .../etc: fichiers de configuration/home: répertoires utilisateurs/lib,/lib32,/lib64et/libx32: contiennent les bibliothèques partagées/media,/mntou/mount: supports amovibles/opt: programmes optionnels et dépendant de l'utilisation du machine/proc: processus du système/root: home de l'utilisateur root (administrateur)/sbin: programmes système/tmp: fichiers temporaires/usr: programmes utilisateur (users)/usr/bin: programmes utiles aux utilisateurs/usr/sbin: programmes utiles à root
/var: fichiers variables (logs, cache…)
Les -> signifient que ces dossiers sont des liens symboliques vers d'autres dossiers du système. On voit par exemple que sur un système Ubuntu (et tous les systèmes modernes) les executables et le bibliothèques partagées sont toutes placées dans le dossier /usr. Ne sont laissés à la racine que des liens permettant la compatibilité.
Dans un système de type Unix, (pratiquement) tout est fichier :
- les dossiers sont des fichiers particuliers
- les commandes sont des fichiers exécutables
- les configurations sont des fichiers textes
- l’accès au matériel et au noyau se fait via des fichiers (ex
/proc,/dev).
Fichiers locaux
Ces fichiers vont contenir des choses différentes selon les utilisateurs et l'usage de la machine.
Utilisateurs
La liste des utilisateurs est disponible dans le fichier /etc/passwd. Chaque ligne est consacrée à un utilisateur (On analysera ce fichier plus tard) et le premier champ (séparé par des :) contient son login. À chaque login d'utilisateur physique (ne nombreux utilisateurs ne sont que virtuels, comme l'utilisateur (les mots de passent n'y sont plus stocké. Ils sont maintenant dans le fichier/etc/shadow{.fichier}) par exemple dont le principal intérêt est de lancer le serveur ssh) possède un dossier où il peut ranger ses fichiers. C'est dans ce dossier, par défaut /home/login, où seront par défaut placé tout nouveau terminal ouvert.
Il contiendra :
- ses fichiers
- ses fichiers de configuration à lui (souvent appelés dotfiles)
- des programmes utiles à lui
Opt
/opt remplace petit à petit /usr/local qui était le dossier par défaut où étaient placés tous les programmes optionnels et machine dépendant. Sous mac c'est par exemple dans ce dossier que s'installe https://brew.sh/
Fichiers spéciaux
Beaucoup d'autres dossiers de la racine ne contiennent des pseudo-fichiers permettent d'interagir finement avec le système. Ce ne sont pas des fichiers réels mais on y accède comme si. C'est par exemple le cas des dossiers /proc et /dev.
/proc
Le dossier /proc va donner des informations sur tous les processus lancés par la machine ainsi que des informations sur le processeur. Par exemple le fichier /proc/uptime contient par exemple le temps écoulé, en secondes, depuis son boot et le temps total de ses différents cœur passés à ne rien faire (s'il y a plus d'un cœur ce temps peut excéder le temps depuis le boot). Par exemple, tapez dans un terminal la commande suivante pour afficher le contenu du fichier /proc/uptime avec la commande cat :
$ cat /proc/uptime
26179.16 522449.82
/dev
Le dossier /dev va contenir des fichiers correspondant aux entrées/sorties. Comme :
- les sorties écran, audio
- les entrées disques, claviers
Il contient également des sorties plus spécifiques comme le fichier /dev/random/ qui génère des nombres aléatoires. Par exemple la commande suivante (dont vous comprendrez la syntaxe plus tard) tapée dans un terminal lit 32 octet de /dev/random/ (le fichier /dev/random est a priori de longueur infinie) et l'affiche à l'écran :
$ head -c 32 < /dev/random | hexdump -ve '32/1 " %02x" "\n"'
a261e9b1e0ee4e41127d08c4baa2172a4cf1c45aeef296a4c8c6f38acf102ea