본문 바로가기
Linux/CentOS 7

[CentOS 7] Linux의 파일 권한

by 인성패밀리 2021. 1. 18.
반응형

실습 환경은 CentOS 7 버전입니다.
VMware에 Linux를 부팅시키고 putty를 이용하여 접속하였습니다.
'#> [명령어]' // [주석]
[]안의 부분만 보시면 됩니다.
'#'은 관리자, '$'는 유저입니다.

 

※경고!※

별 대수롭지 않을수도 있지만 민감한 내용이 있습니다.

아래의 실습은 반드시 본인이 설치한 리눅스에서 실습하시길 바랍니다.

공부 목적으로만 이용해주시고 어디가서 잘못써먹으면

정보보호 관련 법에 걸립니다.

---------------------------------------------------------------------------

 

리눅스의 권한 체계에 관해 살펴 보겠습니다.

리눅스에서 가장 많이 사용하는 명령어 중 하나인 ls 명령어를 사용하다 보면

'll'은 alias로 등록된 'ls -l'의 별명입니다.

 

위와 같이 나오는 것을 보실 수 있습니다.

 

맨 위의 파일 기준으로 순서대로 살펴보면 다음과 같습니다.

-rw-r--r-- = 접근 권한

1 = 링크 수

root = 소유자

root = 소유 그룹

7 = byte

Jan 9 09:34 = 변경 날짜

file2 = 이름

 

상세하게 살펴 보겠습니다.

접근권한은 소유자, 그룹, 다른 사용자로 구분되게 접근이 가능하고,

각 접근하는 대상에 대해 r(읽기), w(쓰기), x(실행) 권한이 부여됩니다.

'-rw-r--r--'의 10자리의 각 의미는

첫 번째 : 이 부분은 파일의 유형을 나타냅니다.

- : 일반 파일

d : 디렉터리

l : 심볼릭 링크 파일

위 3개가 가장 많이 보일 것입니다.

 

이 다음부터는 세 자리씩 끊어서 보면 됩니다.

 

처음 세자리(rw-) : 소유자 권한

다음 세자리(r--) : 소유 그룹 권한

다음 세자리(r--) : 다른 사용자 권한

 

이 권한들은 각각 r, w, x로 표현이 됩니다.

위의 '-rw-r--r--'를 자세히 살펴보면

rw- : 소유자 권한으로 읽기와 쓰기가 가능하고 실행이 불가합니다.

r-- : 소유 그룹 권한으로 읽기만 가능합니다.

r-- : 다른 사용자 권한으로 읽기만 가능합니다.

※'-'는 권한이 없음을 표현합니다.※

 

간단히 정리하면 다음과 같습니다.

 ex) -rw-rwx---x일때 다음과 같이 나눌 수 있습니다.

- rw- rwx --x
'-' = 일반파일
'd' = 디렉터리
'l' = 심볼릭 링크 파일
읽기(r) o
쓰기(w) o
실행(x) x
읽기(r) o
쓰기(w) o
실행(x) o
읽기(r) x
쓰기(w) x
실행(x) o
소유자 권한 소유 그룹 권한 다른 사용자 권한
'-'는 권한이 없는 것입니다.

 

-----------------추가----------------

디렉터리의 권한이 'drwxr-x---', 디렉터리안의 파일의 권한이 '-rw-rw----'이고

디렉터리와 파일의 소유주는 a이고 a와 같은 그룹 b가 있을 때

사용자 b는 디렉터리 안에서 파일이나 디렉터리를 생성할 수 없습니다.

이유는 디렉터리 그룹 권한에 쓰기가 없기 때문입니다.

 

실습 중 약간의 의문이 들어 테스트를 해보았습니다.

의문 : shadow 파일은 아무 권한이 없는데 왜 보는게 가능할까?

 

테스트 과정

1. 실행 파일 하나를 root가 아닌 일반 계정에 하나 만듭니다.

2. 각 권한(소유자, 그룹, 다른 사용자)마다 실행 여부를 테스트 합니다.

3. 일반 파일과 실행 파일에 대해서 진행

 

테스트용 계정으로는 관리자(root), test 그룹(test, testgroup), 일반 계정(tset0188)입니다.

 

기준은 test 계정입니다.

간단하게 'Hello world'를 출력하는 실행 파일을 만들었습니다.

'$> vi a.c'

<a.c 파일의 코드>

include <stdio.h>

int main(void) {

printf("Hello world\n\n");

return 0; }

 

'$> gcc a.c -o aaa' // gcc가 안된다면 '#> yum install gcc'하면 됩니다.

위 명령어를 실행하면 aaa 실행 파일이 생깁니다.

 

'$> ./aaa' // 이렇게 하면 파일이 실행됩니다.

 

aaa파일의 소유자는 test, 소유 그룹은 test입니다.

 

결과 : a.c에 대해 파일의 권한을 어떻게 설정해도 root는 볼 수 있었습니다.

다음은 실행 파일에 대해 궁금해서 테스트 해보았습니다.

1. aaa 파일의 권한이 '----------' 일 때 전부 권한 X, 실행 결과 전부 X
2. aaa 파일의 권한이 '---------x' 일 때 다른 사용자들은 실행 가능할 때, 실행 결과 : 소유자만 X
3. aaa 파일의 권한이 '------x---' 일 때 소유 그룹이 실행 가능할 때, 실행 결과 : 소유 그룹 O, root O, 다른 사용자 X
4. aaa 파일의 권한이 '---x------' 일 때 소유자가 실행 가능할 때, 실행 결과 : 소유자 O, root O, 나머지 X

이 결과 소유자와 root가 비슷한 결과를 나타내는 것을 볼 수 있습니다.

 

 

긴 글 읽어주셔서 감사합니다.
오류나 틀린부분이 있으시면 댓글로 남겨주시면 감사하겠습니다.
여러분들과 같이 공부하는 공간이 되었으면 좋겠습니다.

반응형

댓글