파일링크(ln)

- ln(Link) 명령: 파일의 링크를 생성 할 때 사용(파일 연결 명령어), 하나의 파일에 이름을 두 개 유지 하는 방법을 제공하는 것

- 링크 생성을 통해 편리하게 파일과 디렉토리를 관리 할 수 있음

*참고: 링크 명령어를 사용하는 경우

매우 긴 파일명이 있을 때 사용자가 이 파일을 자주 참조하거나 이 파일을 다른 디렉토리에 연결하여 그 디렉토리에서도 사용하려고 함

- 파일의 경로명을 모두 입력하지 않고 파일명만을 입력하여 파일을 사용하려고 할 때 사용

- UNIX 시스템에서 사용하는 링크에는 하드 링크(Hard Link), 심볼릭 링크(Symbolic Link)가 있음

- 하드 링크는 기존의 UNIX 방식, 심볼릭 링크는 좀 더 최근의 방식, 최근에는 심볼릭 링크를 더 선호

- ln 명령은 레이스 컨디션 공격에 이용 되기도 함, 주기적인 확인으로 불필요한 링크 파일은 삭제 하는 것이 좋음


1. ln 명령어 도움말

옵션 없이 사용시 기본적으로 하드링크가 생성됨

- 심볼릭 링크를 생성하려면 -s(--symbolic) 옵션을 사용


2. 하드 링크(Hard Link)

- 기존의 방식, 기본적으로 하나의 파일에는 하나의 하드 링크가 있음


1) 하드 링크 생성

- 하드 링크: inode 번호에 직접 연결되어 만들어지는 링크

- 하드 링크를 통해서 파일을 생성하면 원본 파일의 inode를 공유하고 이름만 다른 파일이 생성됨 (파일 경로가 다르면 이름도 같을 수 있음)

- inode를 공유하는 하드 링크는 이름을 제외한 모든 속성이 같고, 링크된 파일의 속성을 바꾸면 다른 파일도 속성이 함께 변경

* 참고: inode(index node)

- UNIX 시스템에서 각 파일이나 디렉토리에 대한 모든 정보를 저장하고 있는 블록으로, 파일 소유자의 사용자 번호(UID) 및 그룹 번호(GID), 파일 크기, 파일 타입, 생성시기, 최종 변경 시기, 최근 사용 시기, 파일의 보호권한, 파일 링크 수, 데이터가 저장된 블록의 시작 주소등의 정보를 가지고 있음

- 일반 파일의나 디렉토리 파일의 inode는 각 파일의 디스크 블록의 위치를 포함, 특수 파일의 inode는 주변 장치를 식별 할 수 있는 정보를 포함함

2) 하드 링크 삭제

- 하드 링크가 삭제될 때 링크도 함께 사라지지만 파일 내용은 그 파일의 모든 링크가 삭제 될때까지 그대로 남아 있음

- 즉, 파일에 할 당된 공간이 그대로 남게됨

3) 하드 링크의 약점

- 하드 링크는 다른 파일 시스템 간에는 만들 수 없음(같은 파일 시스템에서만 작성할 수 있음)

- 하드 링크는 디렉토리를 참조 할 수 없음, 즉, 파일에만 링크 가능

- 하드링크는 파일 그 자체만으로 구분해내기 어려움, 해당 링크가 가리키고 있는 것이 무엇인지 보여주지 않음

4) 하드 링크 예시


3. 심볼릭 링크, 소프트 링크(Symbolic Link, Soft Link)

- 사용자가 심볼릭 링크된 파일에 접근하면 커널은 심볼릭 링크 파일의 내용을 참고하여 원래 파일에 접근

- 윈도우의 바로가기와 비슷한 방법으로 다른 파일에 접근함

- 심볼릭 링크는 다른 파일 시스템에 존재하는 파일과 디렉토리 간에도 적용할 수 있음


1) 심볼릭 링크 생성

- 심볼릭 링크를 사용하면 원래 파일의 경로 정보를 담고 있는 inode가 다른 새로운 파일이 만들어 짐

- 심볼릭 링크는 파일에 또다른 이름을 부여할 수는 있으나 하드 링크와 같이 inode에 링크되지 않음

- 심볼릭 링크는 참조될 파일이나 디렉토리를 가리키는 텍스트 포인터가 포함된 특수한 파일을 생성

- 심볼릭 링크에 편집을 하게 되면 심볼릭 링크가 참조하고 있는 파일도 역시 똑같은 변경이 이루어짐

2) 심볼릭 링크 삭제

- 심볼릭 링크를 삭제하는 경우엔 그 링크만 삭제되고 파일은 남아있음

- 심볼릭 링크를 삭제하기 전에 파일을 지웠다면 심볼릭 링크는 살아있지만 링크는 아무것도 가리키지 않게 됨(링크 깨짐)

3) 심볼릭 링크 예시


4. 하드 링크와 심볼릭링크의 차이점

1) inode, link 확인 예시

- touch 명령어: 파일 수정 시간을 변경 및 빈 파일 생성

- stat 명령어: 파일이나 파일 시스템 상태 표시, inode(ls -i으로도 확인 가능)나 링크 수(ls -l에서 확인 가능) 확인

2) 하드 링크 예시

- 링크가 2로 변경되고 동일 inode의 하드 링크 파일 생성됨

- 하드 링크 파일의 링크수도 2

3) 심볼릭링크 예시

- 원본 파일의 링크 수 변동은 없음, 새로운 inode를 가진 파일이 생성됨

- 심볼릭 링크 파일의 링크 수 1

4) 하드 링크와 심볼릭 링크의 차이점

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

 하드 링크

 심볼릭 링크

 - 파일에만 링크 가능

 - 파일 또는 디렉토리에 링크 할 수 있음

 - 존재하지 않는 파일에 대해 하드 링크를 작성 할 수 없음

 - 존재하지 않는 파일에 대해 심볼릭 파일을 작성 할 수 있음

 - 연결되어 있는 파일이 어떤 파일인지 알기 어려움

 - 커널에 의해 처리

 - 같은 파일 시스템간에서만 작성 가능

 - 연결되어 있는 파일을 찾기 용이

 

 - 다른 파일 시스템간에서도 작성 할 수 있음