Quel est le numéro «magique» d'un système de fichiers dans un super bloc?

9

Je travaille sur un système NAS de milieu de gamme fonctionnant essentiellement sous Linux et j'ai pu faire d'excellents tests aujourd'hui. L'étape par étape m'a amené à utiliser fsdb pour corrompre le nombre magique sur un système de fichiers afin de le corrompre / tester le script qui devrait le corriger.

J'ai beaucoup cherché sur Google et je n'ai pas trouvé d'explication solide. Quelqu'un peut-il faire la lumière de façon intermédiaire?

mbb
la source

Réponses:

15

Un nombre magique est une séquence d'octets qui est utilisée dans tous les fichiers d'un certain format, généralement à une position donnée (souvent au début). Étant donné que tous les fichiers de ce format particulier ont cette séquence d'octets particulière à cette position particulière et que la plupart des fichiers d'autres formats ne l'ont pas, le nombre magique est un moyen de reconnaître le format dans lequel se trouve un fichier.

Ici, ce concept est appliqué à un format de système de fichiers. Par exemple, un système de fichiers ext2 / ext3 / ext4 a toujours les octets 0x53 0xEFaux positions 1080–1081. Un système de fichiers reiserfs a toujours à ReIsErFspartir de la position 65588 (ou ReIsEr2Fs, etc., dans les versions plus récentes). D'autres systèmes de fichiers ont des nombres magiques similaires. Les outils du système de fichiers vérifient la présence du nombre magique (et éventuellement d'autres indices) pour vous assurer que vous ne les avez pas accidentellement lancés sur des données organisées dans un format qu'ils ne peuvent pas traiter et qui pourraient endommager. Si vous modifiez le nombre magique sur un système de fichiers, les outils ordinaires sont susceptibles de refuser de le toucher; les outils de réparation pourraient être plus intelligents et traiter un mauvais nombre magique comme l'une des choses qui pourraient être brisées.

La filecommande reconnaît les fichiers en fonction de leur nombre magique. Vous pouvez exécuter file -s /dev/sda1pour voir ce qu'il pense être sur la partition /dev/sda1. Ses décisions sont basées sur une base de données généralement trouvée dans /etc/magicou /usr/share/misc/magic. Des commandes spécifiques peuvent utiliser différents nombres magiques pour reconnaître les formats de fichiers auxquels elles peuvent faire face.

Gilles 'SO- arrête d'être méchant'
la source
Sur Ubuntu, apt-get install source fileva tirer file-x.yy/magic/Magdir/filesystemsqui contenait exactement les informations que la question (et moi) recherchait.
Nick Garvey
N'est-ce pas file /dev/sda1?
Bobby
@Bobby Non, file /dev/sda1vous dira seulement qu'il s'agit d'un nœud de périphérique, il ne dit rien sur le contenu. Vous avez besoin de l'un file </dev/sda1ou de l' autre file -s /dev/sda1.
Gilles 'SO- arrête d'être méchant'
Oh d'accord, pour moi, file < /dev/sda1échoue avec le texte d'aide du fichier (paramètre manquant?), Mais -sfonctionne très bien. Merci.
Bobby
1
@Bobby Ah, je vois, j'ai oublié un personnage. C'est file - </dev/sda1parce que vous devez dire fileexplicitement de lire depuis stdin. Merci, je vais le réparer.
Gilles 'SO- arrête d'être méchant'