수퍼 블록에서 파일 시스템의 "마법"번호는 무엇입니까?


9

저는 기본적으로 Linux에서 실행되는 미드 레인지 NAS 시스템에서 작업하고 있으며 오늘 훌륭한 테스트를 수행해야합니다. 단계별로 fsdb를 사용하여 파일 시스템의 마법 번호를 손상시켜 수정 해야하는 스크립트를 테스트 / 테스트합니다.

나는 꽤 많이 봤고 확실한 설명을 찾지 못했습니다. 중간 방식으로 빛을 비출 수 있습니까?

답변:


15

마법의 수는 보통 (보통 처음에) 특정 위치에 특정 형식의 모든 파일에 사용되는 일련의 바이트입니다. 특정 형식의 모든 파일은 특정 위치에 특정 바이트 시퀀스가 ​​있고 다른 형식의 대부분의 파일에는 해당 문자가 없으므로 마법 번호는 파일의 형식을 인식하는 방법입니다.

여기에서이 개념은 파일 시스템 형식에 적용됩니다. 예를 들어, ext2 / ext3 / ext4 파일 시스템의 0x53 0xEF위치 는 항상 1080–1081 위치에 있습니다. reiserfs 파일 시스템은 항상 ReIsErFs위치 65588 (또는 ReIsEr2Fs최신 버전의 경우 등)에서 시작 합니다. 다른 파일 시스템은 비슷한 매직 넘버를 가지고 있습니다. 파일 시스템 도구는 매직 넘버 (및 다른 단서)가 있는지 확인하여 처리 할 수없고 손상 될 수있는 형식으로 구성된 데이터에서 실수로 매직 넘버를 실행하지 않았는지 확인합니다. 파일 시스템에서 마법 번호를 변경하면 일반 도구가이를 수정하지 않을 수 있습니다. 수리 도구는 더 영리하고 나쁜 마법 번호를 깨뜨릴 수있는 것 중 하나로 취급 할 수 있습니다.

file명령은 마법 번호를 기준으로 파일을 인식합니다. file -s /dev/sda1파티션에서 생각 하는 것을보기 위해 실행할 수 있습니다 /dev/sda1. 결정은 /etc/magic또는 에서 일반적으로 발견되는 데이터베이스를 기반으로합니다 /usr/share/misc/magic. 특정 명령은 다른 매직 넘버를 사용하여 처리 할 수있는 파일 형식을 인식 할 수 있습니다.


우분투에서 apt-get install source file가져옵니다 file-x.yy/magic/Magdir/filesystems정보를 정확하게 질문을 포함하는 (나는) 찾고 있었다.
Nick Garvey 2016 년

그렇지 file /dev/sda1않습니까?
Bobby

@Bobby 아니요, file /dev/sda1이것은 장치 노드임을 알려줄 뿐이며 내용에 대해서는 아무 것도 말하지 않습니다. 당신도 필요 file </dev/sda1file -s /dev/sda1.
Gilles 'SO- 악한 중지'

오, 괜찮아요, file < /dev/sda1파일의 도움말 텍스트 (매개 변수 누락)로 실패하지만 -s훌륭하게 작동합니다. 감사.
Bobby

1
@Bobby 아, 문자 하나를 잊어 버렸습니다. 그건 file - </dev/sda1당신이 알 필요가 있기 때문에, file표준 입력에서 읽을 명시 적으로. 고마워, 내가 고칠 게
Gilles 'SO- 악한 중지'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.