파일링크(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) 하드 링크와 심볼릭 링크의 차이점
하드 링크와 심볼릭 링크의 차이점 |
|
하드 링크 |
심볼릭 링크 |
- 파일에만 링크 가능 | - 파일 또는 디렉토리에 링크 할 수 있음 |
- 존재하지 않는 파일에 대해 하드 링크를 작성 할 수 없음 |
- 존재하지 않는 파일에 대해 심볼릭 파일을 작성 할 수 있음 |
- 연결되어 있는 파일이 어떤 파일인지 알기 어려움 |
- 커널에 의해 처리 |
- 같은 파일 시스템간에서만 작성 가능 |
- 연결되어 있는 파일을 찾기 용이 |
|
- 다른 파일 시스템간에서도 작성 할 수 있음 |
'보안 > System' 카테고리의 다른 글
[UNIX / Linux] 프로세스 응용 (0) | 2015.05.10 |
---|---|
[UNIX / Linux] 디렉토리 및 파일 관련 명령어 (1) | 2015.05.02 |
[UNIX / Linux] 파일 검색(find) (0) | 2015.05.02 |
[UNIX / Linux] 권한 관리(chmod, chown, chgrp, umask) (13) | 2015.04.30 |
[UNIX / Linux] 디렉토리 관리 (5) | 2015.04.29 |
[UNIX / Linux] 특수 문자(Shell Metacharacter) (0) | 2015.04.28 |
[UNIX / Linux] 입출력 재지정, 파이프 (1) | 2015.04.26 |
[UNIX / Linux] 사용자 정보, 그룹 정보 (0) | 2015.04.25 |
[UNIX / Linux] 로그인, 로그아웃 (0) | 2015.04.25 |