inode 번호로 파일 열기

inode 번호로 파일 열기

inode에 할당된 블록을 정확히 찾아서 파일을 볼 수 있는 방법이 있나요? 라이브 CD에 있어야 하는지는 상관 없지만 다음과 같은 작업을 수행해야 합니다.

cat verylongsentice > a
ls -i a
101010 a
ln a /some/random/path
rm a
inode_find 101010
verylongsentice

이를 수행할 수 있는 방법이 있습니까? 루트인가요, 아니면 라이브 CD인가요? 파일 이름에는 관심이 없습니다. 삭제된 파일에도 동일한 작업을 수행할 수 있습니까?

답변1

삭제된 파일에는 inode 번호가 없습니다. 또한, inode 번호가 불변이거나 즉시 재사용되지 않을 것이라는 보장은 없습니다.

귀하의 질문 아래에 있는 댓글에서 귀하는 원하는 것이 효과가 있어야 한다고 매우 단호하게 밝혔습니다. 다음과 같은 행위는 해서는 안 됩니다:

파일 이름이 아닌 inode nr로 직접 파일을 여는 것은 POSIX 파일 작동 방식과 직접적으로 충돌합니다. 또한 파일 경로에 따라 해당 파일에 액세스할 수 있는지 여부가 결정되는 POSIX 권한 모델과도 호환되지 않습니다.

따라서 Linux 커널은 inode를 통해 파일을 여는 API를 제공할 수 없습니다.

파일이 여전히 존재하고 파일 시스템이 실제로 inode를 저장하는 경우(대부분의 파일 시스템은 실제 inode 번호를 저장하지 않는 것 같습니다. 이는 대규모 파일 시스템을 구성하는 끔찍한 방법이지만 아마도 1970년대의 잔재일 것입니다) 시스템 드라이버는 디렉토리 트리 구조(어쩌면 다른 것)의 해당 위치에서 inode nr을 계산하며 전체 파일 시스템에 들어가서 find /mountpoint -i {number}해당 inode 번호가 있는 파일을 찾을 수 있습니다. 삭제된 경우 더 이상 해당 파일이 없습니다. 존재합니다. 찾을 수 없습니다.

관련 정보