Jaki jest „magiczny” numer systemu plików w super bloku?

9

Pracuję na średnim systemie NAS w zasadzie działającym na systemie Linux i muszę dziś zrobić kilka świetnych testów. Krok po kroku doprowadził mnie do użycia fsdb do uszkodzenia magicznej liczby w systemie plików w celu jej uszkodzenia / przetestowania skryptu, który powinien to naprawić.

Przeszukiwałem trochę i nie znalazłem solidnego wyjaśnienia. Czy ktoś może rzucić nieco światła w sposób pośredni?

mbb
źródło

Odpowiedzi:

15

Magiczna liczba to ciąg bajtów, które są stosowane we wszystkich plikach w określonym formacie, zwykle na danym stanowisku (często na początku). Ponieważ wszystkie pliki w tym konkretnym formacie mają tę konkretną sekwencję bajtów w tej konkretnej pozycji, a większość plików w innych formatach jej nie ma, magiczna liczba jest sposobem na rozpoznanie formatu pliku.

Tutaj ta koncepcja jest stosowana do formatu systemu plików. Na przykład system plików ext2 / ext3 / ext4 zawsze ma bajty 0x53 0xEFw pozycjach 1080–1081. System plików reiserfs zawsze ReIsErFszaczyna się od pozycji 65588 (lub ReIsEr2Fsitd., W nowszych wersjach). Inne systemy plików mają podobne magiczne liczby. Narzędzia systemu plików sprawdzają obecność magicznej liczby (i ewentualnie innych wskazówek), aby upewnić się, że nie zostały przypadkowo uruchomione na danych zorganizowanych w formacie, z którym nie mogą sobie poradzić i mogą uszkodzić. Jeśli zmienisz magiczną liczbę w systemie plików, zwykłe narzędzia prawdopodobnie odmówią jej dotknięcia; narzędzia do naprawy mogą być bardziej sprytne i traktować złą liczbę magiczną jako jedną z rzeczy, które można złamać.

filePoleceń rozpoznaje pliki na podstawie ich numerów magicznych. Możesz uruchomić, file -s /dev/sda1aby zobaczyć, co myśli, że jest na partycji /dev/sda1. Jego decyzje opierają się na bazie danych zwykle znajdującej się w /etc/magiclub /usr/share/misc/magic. Określone polecenia mogą używać różnych magicznych liczb do rozpoznawania formatów plików, z którymi mogą sobie poradzić.

Gilles „SO- przestań być zły”
źródło
Na Ubuntu, apt-get install source filebędzie ciągnąć file-x.yy/magic/Magdir/filesystemsktóre zawierały dokładnie te informacje, na pytanie (i) szukałem.
Nick Garvey
Czy nie powinno tak być file /dev/sda1?
Bobby
@Bobby Nie, file /dev/sda1powie ci tylko, że jest to węzeł urządzenia, nie mówi nic o treści. Musisz albo file </dev/sda1albo file -s /dev/sda1.
Gilles „SO- przestań być zły”
No dobrze, dla mnie file < /dev/sda1nie działa z tekstem pomocy z pliku (brakuje parametru?), Ale -sdziała świetnie. Dzięki.
Bobby
1
@Bobby Ach, rozumiem, zapomniałem jednej postaci. Jest tak file - </dev/sda1, ponieważ musisz filewyraźnie powiedzieć, aby czytać ze standardowego wejścia. Dzięki, naprawię to.
Gilles „SO- przestań być zły”