Apa nomor "ajaib" sistem file di blok super?

9

Saya sedang mengerjakan sistem NAS kelas menengah yang pada dasarnya berjalan di Linux dan saya harus melakukan beberapa pengujian hebat hari ini. Langkah demi langkah mengarahkan saya untuk menggunakan fsdb untuk merusak angka ajaib pada sistem file untuk merusaknya / menguji skrip yang harus memperbaikinya.

Saya mencari di Google sedikit dan tidak menemukan penjelasan yang solid. Adakah yang bisa memberi penerangan dalam mode perantara?

mbb
sumber

Jawaban:

15

Angka ajaib adalah urutan byte yang digunakan di semua file dalam format tertentu, biasanya pada posisi tertentu (seringkali di awal). Karena semua file dalam format tertentu memiliki urutan byte tertentu di posisi tertentu itu, dan sebagian besar file dalam format lain tidak memilikinya, angka ajaib adalah cara untuk mengenali format apa file tersebut.

Di sini, konsep ini diterapkan ke format sistem file. Sebagai contoh, sistem file ext2 / ext3 / ext4 selalu memiliki byte 0x53 0xEFpada posisi 1080-1081. Sistem file reiserfs selalu ReIsErFsdimulai pada posisi 65588 (atau ReIsEr2Fs, dll., Dalam versi yang lebih baru). Filesystem lain memiliki angka ajaib yang serupa. Alat Filesystem memeriksa keberadaan angka ajaib (dan mungkin petunjuk lainnya) untuk memastikan bahwa Anda belum secara tidak sengaja meluncurkannya pada data yang diatur dalam format yang tidak dapat mereka tangani dan dapat merusak. Jika Anda mengubah angka ajaib pada sistem file, alat biasa cenderung menolak untuk menyentuhnya; alat perbaikan mungkin lebih pintar dan memperlakukan angka ajaib yang buruk hanya sebagai salah satu hal yang bisa rusak.

The fileperintah mengakui file berdasarkan nomor sihir mereka. Anda dapat berlari file -s /dev/sda1untuk melihat apa yang dipikirkannya di partisi /dev/sda1. Keputusannya didasarkan pada database yang biasanya ditemukan di /etc/magicatau /usr/share/misc/magic. Perintah khusus dapat menggunakan angka ajaib yang berbeda untuk mengenali format file yang dapat mereka atasi.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Di Ubuntu, apt-get install source fileakan menarik file-x.yy/magic/Magdir/filesystemsyang berisi informasi yang persis pertanyaan (dan saya) cari.
Nick Garvey
Bukankah seharusnya begitu file /dev/sda1?
Bobby
@ Bob Tidak, file /dev/sda1hanya akan memberi tahu Anda bahwa ini adalah simpul perangkat, tidak mengatakan apa-apa tentang konten. Anda membutuhkan file </dev/sda1atau file -s /dev/sda1.
Gilles 'SO- stop being evil'
Oh oke, bagi saya file < /dev/sda1gagal dengan teks bantuan dari file (parameter yang hilang?), Tetapi -sberfungsi dengan baik. Terima kasih.
Bobby
1
@ Bobby Ah, begitu, saya lupa satu karakter. Itu file - </dev/sda1, karena Anda harus memberi tahu filesecara eksplisit untuk membaca dari stdin. Terima kasih, saya akan memperbaikinya.
Gilles 'SO- stop being evil'