프로그래밍 공부
작성일
2022. 10. 12. 14:04
작성자
WDmil
728x90

파일의 접근권한 = 기호모드 -> 권한 기호 표시

= 숫자모드 -> 권한 기호 표시

 

파일의 접근 권한 보호

리눅스는 파일에 무단으로 접근하는것을 방지하고 보호하는 기능을 제공함. 사용자는 자신의 파일과 디렉터리 중에서 다른 사용자가 접근 유무를 구분하여 접근 권한을 제한함

파일의 속성

번호 속성값 의미
1 - 파일의 종류(-: 일반 파일, d : 디렉터리)
2 rw-r--r-- 파일을 읽고 쓰고 실행할 수 있는 접근 권한 표시
3 1 하드 링크의 개수
4 root 파일 소유자의 로그인 ID
5 root 파일 소유자의 그룹 이름
6 223 파일의 크기(바이트 단위)
7 2월 20 21:17 파일이 마지막으로 수정된 날짜
8 /etc/hosts 파일 명

파일의 I node 구조체에 저장되는 데이터 이다.

 


접근 권한의 종류

읽기 권한, 쓰기 권한, 실행 권한 세가지로 구성됨

권한 파일 디렉터리
읽기 [ r ] 파일을 읽거나 복사할 수 있다
(디렉터리 안에서 리스트업 가능하다라는 의미)
ls 명령으로 디렉터리 목록을 볼 수 있다.(ls 명령의 옵션은 실행 권한이 있어야 사용할 수 있다.)
쓰기 [ w ] 파일을 수정, 이동,삭제할 수 있다.(디렉터리에 쓰기 권한이 있어야 한다.) 파일을 생성하거나 삭제할 수 있다.
실행 [ x ] 파일을 실행할 수 있다.(셸 스크립트나 실행파일의 경우). cd 명령을 사용할 수 있다. 파일을 디렉터리로 이동하거나 복사할 수 있다.

접근권한 표기법

사용자 카테고리 별로 누가 읽고 쓰고 실행할 수 있는지 문자로 표현

읽기 권한은 r, 쓰기 권한은 w, 실행 권한은 x로 표현, 해당 권한이 없다면 '-'로 표기됨.

사용자 카테고리 별로 세 가지 권한의 부여 여부를 rwx 세 문자를 묶어서 표기한다.

위 이미지에서 -rw-r--r-- 이라고 써져 있음으로 root 에게는 r읽기, w 쓰기 권한밖에 없다.
접근 권한의 표기 분류

접근 권한 의미
rwxr-xr-x 소유자는 읽기, 쓰기, 실행 권한을 모두 가지고 있고 그룹과 기타 사용자는 읽기와 실행 권한만 가지고 있다.
r-xr-xr-x 소유자, 그룹 기타 사용자 모두 읽기와 쓰기 실행 권한만 가지고 있다.
rw------- 소유자만 읽기, 쓰기 권한을 가지고 있고 그룹과 기타 사용자는 아무 권한이 없다.
rw-rw-rw- 소유자, 그룹 기타 사용자 모두 읽기와 쓰기 권한을 가지고 있다.
rwxrwxrwx 소유자, 그룹, 기타 사용자 모두 읽기 쓰기 실행 권한을 가지고 있다.
rwx------ 소유자만 읽기, 쓰기, 실행 권한을 가지고 있고 그룹과 기타 사용자는 아무 권한이 없다.
r-------- 소유자만 읽기 권한을 가지고 있다.

접근 권한의 변경 명령

chmod
기능 파일이나 디렉터리의 접근 권한을 변경한다.
형식 chmod [ 옵션 ] 권한 모드 파일 또는 디렉터리 명
옵션 -R : 하위 디렉터리까지 모두 변경할 수 있다.

- 기호 모드 : 접근 권한을 변경하기 위해 문자와 기호를 사용하여 권한 표시

- 숫자 모드 : 접근 권한을 변겨하기 위해 숫자를 사용

 

기호 모드

구분 문자/기호 의미
사용자 카테고리 문자 u 파일 소유자
g 소유자가 속한 그룹
o 소유자와 그룹 이외의 기타 사용자
a 전체 사용자
연산자 기호 + 권한 부여
- 권한 제거
= 접근 권한 설정
접근 권한 문자 r 읽기 권한
w 쓰기 권한
x 실행 권한

접근 설정의 예시

권한 표기 의미
u+x 소유자(u)에게 쓰기(w) 권한 부여(+)
u-x 소유자(u)에게 쓰기(w) 권한 제거(-)
g+w 그룹(g)에 쓰기(w) 권한 부여(+)
o-r 기타 사용자(o)의 읽기(r) 권한 제거(-)
g+wx 그룹(g)에 쓰기(w)와 실행(x) 권한 부여(+)
+wx 모든 사용자에게 쓰기(w)와 실행(x) 권한 부여(+)
a+rwx 모든 사용자에게 읽기(r), 쓰기(w), 실행(x) 권한 부여(+)

소유자의 쓰기 권한을 제거

숫자로 환산 하기

숫자모드에서는 각 권한이 있고 없고를 0과 1로 표기, 이를 다시 환산하여 숫자로 표현함

카테고리 별로 권한의 조합에 따라 0부터 7로 나타내는것

권한을 숫자로 환산하는 과정

r-x 라고 할 때 권한이 있는 것은 1로, 없는것은0 으로 변환

2진수 1, 0 , 1로 변환

2진수를 각 자릿수 별로 10진수로 환산하면 4, 0, 1이 된다.

세 숫자를 더하면

최종 권한 값은 5가 됨.

777 = rwxrwxrwx

644 = rw-r--r--

기타 사용자에게 실행 권한을 부여

o+x , r--rwxr-x -> 475

 


기본 접근 권한

리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한 자동 설정

일반 파일의 경우 소유자는 읽기와 쓰기 권한이 설정되고 그룹과 기타 사용자는 읽기 권한만 설정

디렉터리의 경우 소유자는 읽기, 쓰기, 실행 권한이 설정되고 그룹과 기타 사용자는 읽기, 실행 권한만 설정.

실행 권한이 있는 이유는 권한설정을 바꾸어야 하기 때문에,

기본 접근권한 확인하고 변경하기

umask
기능 기본 접근 권한을 출력하거나 변경한다
형식 umask [옵션] [마스크값]
옵션 -S : 마스크 값을 문자로 출력한다.
사용 예 umask 022

마스크 값은 파일이나 디렉터리 생성 시 부여하지 않을 권한을 지정함.

마스크값이 022 인 경우 이는 ----w--w-이고, 그룹과 기타 사용자에게 쓰기 권한은 부여하지 않겠다는 것.

즉, 전체 권한이 777이라고 하면, 022라는 권한을 빼앗겠다 라는것. 위 명령어를 실행하고 난 뒤에는

755라고 할 수 있다.


특수 접근 권한

접근 권한은 원래 4자리

생략된 맨 앞자리는 특수 접근 권한 의미

맨 앞자리 숫자가 0이면 일반적인 접근 권한이지만, 이 숫자가 1, 2, 4 이면 특수 접근 권한이 설정

SetUID : 맨 앞자리가 4 4022
SetGID : 맨 앞자리가 2 2022
스티키 비트 (sticky bit) : 맨 앞자리가 1 1022

SetUID

해당 파일이 실행 되는 동안에는 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한으로 실행된다.

SetUID가 설정되면 소유자의 실행 권한에 's'가 표시된다. ( Super 라는 의미 )

SetUID를 이용한 해킹의 위험도 있기 때문에 보안에 신경써야 한다.


SetGID

해당 파일이 실행되는 동안 파일 파일을 실행한 사용자의 권한이 아니라 파일 소유 그룹의 권한으로 실행된다.


sticky bit

디렉터리에 스티키 비트가 설정되어 있으면 이 디렉터리에는 누구나 파일을 생성 가능하다.

파일은 파일을 생성한 계정으로 소유자가 설정되며, 다른 사용자가 생성한 파일은 삭제 불가하다.

 

728x90