티스토리 뷰

리눅스/리눅스 보안

4. Link file

로또_ 2020. 2. 11. 15:50

inode

UFS와 같은 전통적인 유닉스 계통 파일 시스템에서 사용하는 자료 구조입니다. 파일 시스템 내에서 파일이나 디렉토리는 고유한 INODE를 가지고 있으며 inode 번호를 통해 구분이 가능합니다. 사용자가 파일 또는 파일과 관련된 정보에 엑세스 하려고 하면 파일 이름을 사용하지만, 내부적으로 파일 이름은 먼저 디렉토리 테이블에 저장된 inode 번호로 매핑됩니다. 다음으로는 해당 inode 번호를 통해 해당 inode에 액세스 됩니다.

 

inode에 포함된 정보는 아래와 같습니다.

-파일 모드(퍼미션), 링크수, 소유자명, 그룹명, 파일크기, 파일 주소, 마지막 접근 정보, 마지막 수정 정보, 아이노드 수정 정보

inode 포인터 구조를 통해 파일의 실제 데이터가 저장된 블록의 정보를 포함하여 파일의 메타 데이터 정보만 저장시킵니다.

 

 

symbolic link

특정 파일이나 디렉토리에 대하여 참조를하는 특수한 파일입니다. 쉽게 생각하면 바로가기와 같은 파일이라고 볼 수 있습니다.

 

 

create symbolic link

생성 명령어는 ln입니다. 파일 생성시에는 -s 옵션을 주어서 사용합니다.

ln -s "원본파일" "링크파일"

 

 

hello가 담긴 test 파일을 생성하고 whoami라는 파일로 sysbolic link를 걸어주었습니다. 그리고 다음과 같이 잘 연결된 것을 확인할 수 있었습니다.

 

원본 test파일을 지웠을때, 다음과 같이 빨간색으로 연결이 되지 않았음을 보여줍니다.

그래서 똑같은 이름으로 다시 test파일을 생성해 주었더니 다시 연결되었습니다. 심볼릭 링크는 원본파일의 이름만 같으면 다시 연결 할 수 있습니다.

 

또한, symbolic link file을 변형하면 원본 파일도 똑같이 반영됩니다.

 

 


 

 

hard link

원본 파일과 동일한 inode를 가집니다. 그렇기 때문에 원본 파일이 삭제 되더라도 원본 파일의 inode를 갖고 있는 링크 파일은 여전히 사용 가능합니다. 

 

하드링크를 걸어준 test와 yesiam은 똑같은 inode번호를 갖습니다.(6821352) 하지만 심볼릭 링크는 6825227로 다른 inode를 가지고 있습니다.

 

yesiam에 대해 변경하여도 하드 링크로 연결된 test도 변경사항이 반영된 것을 확인 할 수 있습니다.

 

yesiam의 원본 파일은 test파일을 지워도 yesiam은 그대로 남아있습니다.

 

 

하드링크는 복사본과는 다릅니다. 파일 시스템에 있는 데이터를 복사한 것이 아닌 inode 번호만 복사했기 때문입니다. 하드링크 한 것은 inode번호가 같지만 copy한 것은 inode가 다른 것을 볼 수 있습니다.

 

 

심볼릭 링크와 하드링크의 차이

 

 

실습

다음과 같은 힌트로 /usr/bin/level5 프로그램은 /tmp 디렉토리에 임시파일을 생성한다는 것을 알아내었다. 그래서 심볼릭 링크방식과 하드 링크 방식으로 임시파일에 작성한 것을 보려고 한다.

해당하는 임시파일은 /usr/bin/level5 실행과 동시에 사라지므로 임시파일을 열어서 본다는 것은 불가능에 가깝다. 따라서 앞에서 이야기한대로 심볼릭 링크와 하드링크를 통해서 알아볼것이다.

 

 

 

참고 : https://koromoon.blogspot.com/2018/05/inode-symbolic-link-hard-link.html

반응형