
Un fichier Linux peut porter une mauvaise extension, provenir d’un téléchargement interrompu ou être simplement un binaire sans indication claire. Avant de l’ouvrir ou de l’exécuter, je vous conseille de vérifier ce qu’il contient réellement avec file. La commande s’appuie sur la signature du fichier, pas uniquement sur son nom.
La commande file commence par la signature du fichier
Placez-vous dans le dossier concerné, puis passez le chemin du fichier à file :
file sauvegarde
file image.jpg
file script.sh
Le résultat indique généralement une famille de contenu : texte ASCII ou UTF-8, archive, image, exécutable ELF, document PDF ou données binaires. Si un fichier appelé photo.jpg est en réalité une page HTML, file vous le signalera. C’est un contrôle simple qui évite de lancer un contenu inattendu.
Pour analyser plusieurs fichiers, utilisez un motif shell :
file *.tar.gz
file --brief --mime-type *
L’option --brief retire le nom du fichier de la sortie. L’option --mime-type renvoie uniquement le type MIME, par exemple text/plain, application/zip ou application/octet-stream. Cette forme est pratique dans un script ou pour comparer rapidement une série de téléchargements.
Lire les magic bytes sans exécuter le fichier
file lit les premiers octets et les compare à une base de signatures. Ces magic bytes permettent souvent de reconnaître un format même si l’extension est absente ou mensongère. Une archive ZIP commence par exemple par une signature caractéristique, tandis qu’un exécutable Linux ELF possède sa propre identification.
Vous pouvez demander davantage de détails :
file -k sauvegarde
file -z archive.tar.gz
file --mime sauvegarde
-k demande à file de poursuivre les tests et peut faire apparaître plusieurs interprétations. Avec -z, la commande tente aussi d’identifier le contenu décompressé d’un fichier compressé. --mime affiche le type MIME et un éventuel jeu de caractères.
Cette vérification ne remplace pas une analyse de sécurité. Un fichier identifié comme script ou exécutable peut toujours être malveillant. Ne lancez pas un contenu inconnu avec sudo simplement parce que son type semble cohérent.
Comparer le type détecté avec ce que vous attendiez
Après un téléchargement, vérifiez d’abord le type puis la taille :
file paquet.deb
stat paquet.deb
sha256sum paquet.deb
Si vous attendiez un paquet Debian et obtenez HTML document, le serveur a probablement renvoyé une page d’erreur ou une redirection enregistrée au mauvais endroit. Le même piège existe avec les archives : un fichier nommé archive.tar.gz peut être un téléchargement incomplet ou une page web. Dans ce cas, utilisez aussi wget sous Linux pour reprendre proprement le téléchargement, puis contrôlez l’empreinte publiée par le fournisseur.
Pour inspecter le contenu d’une archive sans l’extraire dans votre dossier de travail, utilisez l’outil adapté. L’article sur tar sous Linux détaille cette étape. Avec un fichier compressé ou un paquet, ne mélangez pas l’identification du format et l’exécution de ce qu’il contient.
Les limites de file à garder en tête
La commande se trompe rarement sur les formats courants, mais elle ne valide ni l’intégrité ni l’authenticité d’un fichier. Un script modifié reste un script, et un paquet corrompu peut parfois conserver une signature reconnaissable. Pour un fichier sensible, complétez le contrôle avec une somme SHA-256, une signature GPG ou la procédure publiée par le projet.
L’ordre reste le même : identifier, vérifier la provenance, inspecter, puis seulement ouvrir ou exécuter. Sur un serveur, cette commande mérite une place dans les contrôles de téléchargement et les scripts de diagnostic, précisément parce qu’elle ne se fie pas à l’extension.