Qual è il numero "magico" di un file system in un super blocco?


9

Sto lavorando su un sistema NAS di fascia media praticamente in esecuzione su Linux e oggi devo fare dei grandi test. Il passo passo mi porta a usare fsdb per corrompere il numero magico su un file system al fine di corromperlo / testare lo script che dovrebbe risolverlo.

Ho cercato su Google un po 'e non ho trovato una spiegazione solida. Qualcuno può fare luce in modo intermedio?

Risposte:


15

Un numero magico è una sequenza di byte che viene utilizzata in tutti i file di un determinato formato, di solito in una determinata posizione (spesso all'inizio). Poiché tutti i file in quel particolare formato hanno quella particolare sequenza di byte in quella particolare posizione, e la maggior parte dei file in altri formati non ce l'hanno, il numero magico è un modo per riconoscere in quale formato si trova un file.

Qui, questo concetto viene applicato a un formato di file system. Ad esempio, un filesystem ext2 / ext3 / ext4 ha sempre i byte 0x53 0xEFnelle posizioni 1080-1081. Un filesystem reiserfs ReIsErFsinizia sempre dalla posizione 65588 (o ReIsEr2Fs, ecc., Nelle versioni più recenti). Altri filesystem hanno numeri magici simili. Gli strumenti del filesystem verificano la presenza del numero magico (e possibilmente di altri indizi) per assicurarsi che non siano stati accidentalmente lanciati su dati organizzati in un formato che non possono gestire e che potrebbero danneggiare. Se si modifica il numero magico su un filesystem, è probabile che gli strumenti ordinari si rifiutino di toccarlo; gli strumenti di riparazione potrebbero essere più intelligenti e trattare un cattivo numero magico come solo una delle cose che potrebbero essere rotte.

Il filecomando riconosce i file in base ai loro numeri magici. Puoi correre file -s /dev/sda1per vedere cosa pensa sia sulla partizione /dev/sda1. Le sue decisioni si basano su un database che si trova in genere in /etc/magico /usr/share/misc/magic. Comandi specifici possono utilizzare numeri magici diversi per riconoscere i formati di file che possono affrontare.


Su Ubuntu, apt-get install source fileestrarrà file-x.yy/magic/Magdir/filesystemsquale conteneva esattamente le informazioni che la domanda (e io) stavamo cercando.
Nick Garvey,

Non dovrebbe essere file /dev/sda1?
Bobby,

@Bobby No, file /dev/sda1ti dirà solo che questo è un nodo del dispositivo, non dice nulla sul contenuto. Hai bisogno di file </dev/sda1o file -s /dev/sda1.
Gilles 'SO- smetti di essere malvagio' il

Oh okay, per me file < /dev/sda1non riesce con il testo di aiuto dal file (parametro mancante?), Ma -sfunziona benissimo. Grazie.
Bobby,

1
@Bobby Ah, vedo, ho dimenticato un personaggio. È file - </dev/sda1perché devi dire fileesplicitamente di leggere dallo stdin. Grazie, lo aggiusterò.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.