인디안 보호구역

[Linux] 파일의 종류, 파일 권한, 링크 본문

Study/보안 공부하는 인디안

[Linux] 파일의 종류, 파일 권한, 링크

Indie-An 2015. 7. 20. 22:39

01. 파일의 종류, 권한, 링크

아래는 리눅스 상에서 ls 명령어의 -l 옵션을 통해 얻게되는 정보들이다. 

-l 옵션으로 얻게되는 정보가 많다. (파일의 종류, 파일 권한, 링크 갯수 등등...)

천천히 하나하나 살펴보자.





숫자 순서대로

(1) 파일의 종류                    (2) 퍼미션

(3) 링크 수                          (4) 소유자 이름

(5) 그룹 이름                       (6) 파일 크기

(7) 파일이 만들어진 시간       (8) 파일 이름

이다.


(1) 파일의 종류는 어떻게 구분하는가?



1번에 있는 문자가 파일의 종류를 구분하여 알려준다.

- : 일반 파일. 정규 파일.

d : 디렉토리 파일

l : 심볼릭 링크 파일

b : 블록 디바이스 파일

c : 캐릭터 디바이스 파일

p : 파이프. 프로세스간 통신에 사용되는 특수 파일

s : ​소켓. 네트워크 통신에 사용되는 특수 파일

으로 구분된다.


디바이스 파일이란? 하드웨어나 주변 기기를 나타내는 파일이다. ex) HDD, 프린터, 마우스 등...

블록 디바이스 : 디스크나 자기 테이프 장치와 같은 데이터를 어느 정도 모은 블록 단위(보통 512 bytes)로 처리하는 장치이다. 입,출력 시에 커널 내의 특정 버퍼들을 이용한다.

캐릭터 디바이스 : 터미널이나 프린터와 같은 문자 단위로 입출력을 하는 장치이다.



(2) 파일권한(Permission)이란 무엇인가?



Permission의 사전적 정의는 "허가, 승인"인데, 

시스템에 사용되는 모든 파일 및 폴더는 한 세트의 권한으로 설정이 되어있다.

누가 이 파일의 주인이며, 누가 실행할 것인지에 대한 설정이다.

그 권한으로는 크게 r(Read), w(Write), x(eXecute) 세가지가 있다.

그리고 모든 파일(또는 폴더)에는 소유자 및 그룹이 존재한다.

일반적으로 파일의 소유자는 파일의 작성자이다.

또한 그룹은 보통 그 파일에 관련된 사용자의 그룹으로 설정이 된다.


위의 이미지를 살펴보면 총 10개의 문자가 있는데 아래와 같이 4부분으로 나눠진다.

       -                    ---                        ---                    ---

 d                    rwx                        rwx                   rwx

파일의 종류         소유자권한              그룹권한           그외 일 사용자



예를 들어보자. 위의 bof.c라는 파일에 대해서, 내가 만약 user라는 이름의 사용자로 로그인을 했을 때,

이 user라는 계정이 그룹 root에 포함되어 있으면,  나는 rwx(읽기, 쓰기, 실행) 권한을 가지고 있을 것이나

만약 user가 그룹 root에 포함되어있지 않았다면, r-x(읽기, 실행)권한만을 가지고 있었을 것이다.


또한 퍼미션의 rwx는 숫자로 표현이 가능한데,

Read=4, Write=2, eXecute=1로 이진수 100, 010, 001를 기초로 하고 있다.

그래서 rwx = 111(2) = 7, rw- = 110(2) = 6, r-x = 101(2) = 5가 된다.

그러므로 퍼미션 777, 755, 711, 644는 위의 세부분인 각 권한을 숫자로 표현하여 나타낸 것이다.

아래는 자주 쓰이는 퍼미션이다.


777 = rwxrwxrwx

755 = rwxr-xr-x

711 = rwx--x--x

644 = rw-r--r--



(3) 링크 수란 무엇인가?



리눅스에서 링크 개념으로, 심볼릭 링크와 하드 링크가 있다.

심볼릭 링크는 쉽게 말해서 우리가 윈도우에서 자주 사용하는 '바로가기' 개념이다.

결국 링크 수라는 것은, 해당 파일에 링크가 몇개 있는지 나타내는 것이다. 1은 원본파일만 있고, 링크파일이 0이라는 뜻이다.

하드 링크도 바로가기의 개념과 비슷하나, 심볼릭 링크와는 조금 차이가 있다.



아래는 이해를 돕기 위한 예시.

만약 내가 어떤 파일 bof.c를 저장하게 되면, 하드드라이브의 어떤 부분에 bof.c 내용을 기록하게 된다. 그리고 그 위치 정보를 헤더에 저장을 하는 것이고. 즉 bof.c라는 이름은 단지 헤더에 있는 위치 정보만을 가지고 있게 된다. 우리가 bof.c 파일을 콜하게 되면 이 파일이 가지고 있는 위치 정보를 이용해서 하드에서 내용을 찾아 사용하게 되는 것이다.

이제 위에서 설명한 링크와 접붙여보면, 하드링크는 이 위치정보를 가지고 있는 이름을 여러개 생성한다고 생각하면 된다. 그렇기 때문에 어떤 하나를 지우더라도 하드에서 내용을 찾아 갈 수 있는 것이다. 그러나 심볼릭 링크는 위치 정보를 가지고 있는 파일명을 또 한번 다른 이름으로 연결을 시키는 것이다. 그렇기 때문에 원본 파일을 삭제하게 되면 심볼릭 링크 파일들은 위치정보가 없기 때문에 무용지물이 된다는 것이다.



(4) 소유자 계정이란 무엇인가?

위에서 설명했지만, 소유자 계정이란 파일이나 디렉터리의 소유자를 나타내는 것이다. 해당 파일을 생성한 계정이며, 파일 생성자나 관리자가 설정을 바꿀 수 있다.


(5) 그룹 계정이란 무엇인가?

역시 위에서 설명했지만, 그룹 계정이란 해당 파일을 만든 계정이 속한 그룹을 나타내는 것이다.


(6) 파일 크기이다. byte 단위를 사용한다.

(7) 만든 날짜이다.

(8) 파일이나 디렉터리의 이름이다



Comments