Introduction
Sous Windows ou macOS, vous avez l’habitude de vous fier aux extensions pour savoir ce qu’est un fichier. Si son nom se termine par .jpg, c’est une image. S’il se termine par .exe, c’est un programme.
Sous Linux, en revanche, les noms de fichiers ne sont que des étiquettes. Et, comme dans la vie courante, ces étiquettes peuvent être incorrectes. Vous pouvez prendre un pot de sel et écrire « Sucre » sur l’étiquette : son contenu restera salé.
Linux ne se fie pas à l’étiquette, c’est-à-dire au nom du fichier. Le système examine plutôt son contenu pour déterminer ce qu’il est réellement.
Cela illustre une idée plus générale d’Unix : le sens provient souvent de la structure et de l’utilisation des données, et pas uniquement de leur nom. Les extensions peuvent fournir des indications pratiques aux utilisateurs, mais elles ne constituent pas la source de vérité définitive.
Dans ce laboratoire, vous utiliserez la commande file pour déterminer la véritable nature des fichiers, quel que soit leur nom.
Cette compétence est utile dans les opérations informatiques du quotidien. Vous pouvez rencontrer des fichiers téléchargés, des journaux, des dumps, des scripts ou des pièces jointes suspectes dont le nom est trompeur. Avant de les ouvrir, de les exécuter ou de les modifier, il est prudent de vérifier ce qu’ils contiennent réellement.
Vérifier un fichier texte
Commençons par un fichier qui correspond exactement à ce qu’indique son nom.
Commencez par accéder à votre répertoire de projet :
cd ~/project
ls -l
Vous voyez le fichier welcome.txt. L’extension .txt laisse penser qu’il s’agit d’un fichier texte. Mais souvenez-vous que nous ne nous fions pas aux étiquettes.
Demandez à la commande file de l’examiner :
file welcome.txt
Vous devriez voir une sortie semblable à celle-ci :
welcome.txt: ASCII text
La commande file a vérifié le contenu et confirmé qu’il s’agit bien de texte ASCII.
Des commandes comme cat et less, ainsi que les éditeurs de texte, sont plus faciles à utiliser lorsque vous savez déjà si un fichier contient du texte. La commande file vous aide à prendre cette décision en toute sécurité.
Vous pouvez donc le lire sans risque avec une commande comme cat :
cat welcome.txt
Vérifier un fichier binaire
Les programmes système, comme ls, mkdir ou cat, ne sont pas des fichiers texte. Ce sont des fichiers binaires, écrits dans un langage que seul le processeur de l’ordinateur comprend.
Examinons directement la commande ls. Elle se trouve dans le répertoire /bin.
Demandez à file de l’identifier :
file /bin/ls
La sortie peut sembler inquiétante, mais elle contient des informations importantes :
/bin/ls: ELF 64-bit LSB pie executable, x86-64, ...
Ne vous inquiétez pas. Voici comment l’interpréter :
- ELF : format standard des programmes Linux, comparable à
.exesous Windows. - executable : il s’agit d’un programme que vous pouvez exécuter.
ELF signifie Executable and Linkable Format. Il s’agit du format binaire standard utilisé par de nombreux systèmes Linux. Vous n’avez pas besoin de retenir son nom complet, mais il est utile de reconnaître ELF comme l’indication qu’il s’agit d’un exécutable Linux.
L’essentiel à retenir est que file vous a indiqué qu’il s’agit d’un exécutable. Si vous essayiez d’exécuter cat /bin/ls, votre écran se remplirait de symboles étranges. Savoir qu’un fichier est binaire vous avertit donc qu’il ne faut pas le lire comme du texte, mais l’exécuter.
Identifier des fichiers inconnus
Passons maintenant au travail de détective. Deux fichiers suspects se trouvent dans votre répertoire de projet : mystery_file et fake_image.jpg.
Cas 1 : le fichier sans nom
mystery_file n’a aucune extension. S’agit-il d’un fichier texte ou d’un programme ?
Testez-le :
file mystery_file
Résultat :
mystery_file: PNG image data, ...
Ah ! Il s’agit d’une image PNG. Même sans étiquette dans son nom, Linux a identifié la signature interne d’une image PNG.
Cas 2 : le fichier menteur
Examinons maintenant fake_image.jpg. Son extension indique une « image JPEG ». Mais est-ce réellement le cas ?
file fake_image.jpg
Résultat :
fake_image.jpg: ASCII text
C’est un mensonge ! Il s’agit simplement d’un fichier texte.
Puisque nous savons qu’il contient du texte, nous pouvons le lire sans risque :
cat fake_image.jpg
Cette compétence, qui consiste à identifier les fichiers d’après leur contenu plutôt que leur nom, distingue les utilisateurs expérimentés de Linux des débutants.
C’est aussi l’une des raisons pour lesquelles Linux dépend moins des extensions que certains systèmes d’exploitation de bureau. Les extensions sont des conventions utiles, mais le système peut souvent obtenir davantage d’informations en inspectant directement le fichier.
Résumé
Vous avez appris à dépasser l’étiquette du fichier pour découvrir sa véritable nature.
file filename: la commande qui permet de découvrir la vérité.- Les extensions peuvent mentir :
.jpgne signifie pas toujours qu’il s’agit d’une image. - Aucune extension ? Aucun problème : Linux n’a pas besoin d’une extension pour déterminer ce qu’est un fichier.
Vous êtes maintenant prêt à examiner tout fichier inconnu que vous rencontrerez !



