본문으로 바로가기

[D+10] Link

category 해킹&보안/Linux 2017. 2. 20. 19:08
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

8. Link


1) Inode


▣ Inode란?

- 파일의 이름과 실제 데이터를 연결시켜주는 다리

[출처 : https://en.wikipedia.org/wiki/Inode_pointer_structure]


▣ 삭제

- 파일을 삭제해도 실제 하드디스크에는 남아있음.

- 삭제 : 데이터를 삭제하는게 아닌 Inode를 끊어버리는 것.

- 복원 : 다시 해당 데이터와의 Inode를 연결시켜줌.

- 포맷 : 데이터를 날리는게 아니고 그 위에 새 종이를 덮어 버리는 것과 비슷.

☞ 포맷을 5~6번 하면 그나마 복원하기 힘들어짐.

☞ SSD는 복원이 불가함.


2) 링크




<Hard Link File>

- 원본파일 abc가 존재한다고 가정.

- abc에 대해 하드 링크 파일을 생성 -> habc

- 하드 링크 파일은 동일한 inode를 사용하기 때문에 abc와 habc 모두 같은 문자열을 출력한다.

- 이 때 abc파일을 삭제해도 habc는 여전히 동일한 문자열을 출력한다.

- abc파일의 삭제는 데이터를 삭제하는 것이 아닌 inode1과 원본파일 사이를 끊는것을 의미.

- 그렇기 때문에 inode1은 계속해서 존재하므로 habc에는 아무런 영향이 없음.

- 또한 abc의 내용을 바꾸면 habc 또한 내용이 바뀜.


<Symbolic Link File>

- 원본파일 abc가 존재한다고 가정.

- abc에 대해 심볼릭 링크 파일을 생성 -> sabc

- 이 때 sabc는 새로운 아이노드인 inode2를 생성. 이 때는 포인터기 때문에 원본 파일을 가리킴.

- abc를 삭제 후 cat sabc를 하면 에러가 뜸.

- 하지만 심볼릭 링크 파일은 파일의 이름을 따라가기 때문에 다른 abc를 만들면 sabc는 새로 생성된 abc의 내용을 출력해줌.



▣ 하드 링크

- usage : ln <원본 파일> <링크 파일명>

- 링크 수에 영향을 줌. (링크 수 증가, 원본 삭제시 다시 내려옴)

- 동일한 inode 사용

- 원본 수정시 하드링크도 수정됨.

- 원본의 이동이나 삭제 시 남아 있음.

- 파일 복사와의 차이는 공간을 차지하지 않음.



▣ 심볼릭 링크

- usage : ln -s <원본 파일> <링크 파일명>

- 윈도우의 바로가기 아이콘과 비슷

- 주로 사용자가 많이 사용

- 긴 디렉토리명 이동시 유용

- 원본을 다른 곳으로 이동시키면 사용 못함.

- 새로운 inode 생성

- 원본 자체 포인터 역할 뿐이므로, 원본 수정시 수정된 파일이 보임.

- 원본의 삭제 시 링크가 끊김

- 파일 유형이 'l'이 됨. 권한은 777


▣ inode를 보여주는 명령어 : ls -il




☞ 원본 파일을 삭제한 후의 링크 파일들 출력 상태



[생각해봅시다~]


원본 권한 변경시 하드링크는? 심볼릭링크는?

- 하드링크 : 권한변경, 심볼릭링크 : 권한변경x


하드링크 권한 변경시 원본?

- 원본의 권한이 변경됨


심볼릭 링크 권한 변경시 원본은?

- 심볼릭링크 : 권한변경x , 원본: 권한변경됨


심볼릭 걸고 원본 삭제 후 같은 이름으로 다른파일 생성하면?

- 다른파일의 내용을 출력함


하드링크 걸고 원본 삭제 후 같은 이름으로 다른파일 생성하면?

- 새로운 파일이 생성됨


하드링크에 심볼릭 링크가 걸리나?

- O


심볼릭 링크에 하드링크가 걸리나?

- O


걸린다면 원본과는 어떻게 되나?

- 동일한 Inode 형성


디렉터리는 링크가능? 하드? 심볼릭?

- 심볼릭 링크 가능



Q. 디렉토리도 링크가 됨?

A. 심볼릭만 가능.

- 디렉토리는 실제 하드에 저장되어 있는 존재가 아니라 편리한 사용을 위해 제공되어지는 가상의 것임.

- 그러나 디렉토리 명은 존재하기때문에 심볼릭 링크는 가능함.








i2sec 대구지점 23기 수료생.

'해킹&보안 > Linux' 카테고리의 다른 글

[D+12] Package Install & Daemon  (0) 2017.02.22
[D+11] Vi editor  (0) 2017.02.21
[D+9] Process Management  (0) 2017.02.17
[D+8] Permissions  (0) 2017.02.16
[D+7] 유저 관리  (0) 2017.02.15