Linux

[Linux] 퍼미션(Permission) (1) : 작동 원리

nayoungs 2024. 11. 9. 14:40
728x90

리눅스에서 작업을 하다보면 Permission Denied 오류 메시지를 한 번쯤은 본 경험이 있을 것이다. 오늘은 이러한 퍼미션(Permission)이 무엇인 지, 그리고 어떻게 작동하는지에 대해 알아보자.

 

퍼미션(Permission)

리눅스 시스템에서 퍼미션(Permission)이란 특정 파일이나 디렉토리에 대해 읽기/쓰기/삭제 등의 권한을 설정하여 파일 접근 권한을 제어하며, 파일을 보호하기 위해 사용한다. 파일의 퍼미션은 ls 또는 stat 으로 확인할 수 있다.

# -l 옵션과 함께 사용한다.
ls -al
total 0
drwxr-xr-x@  3 nayoung  staff    96 Feb 25  2024 .
drwxr-x---+ 68 nayoung  staff  2176 Nov  9 13:47 ..
drwxr-xr-x@  2 nayoung  staff    64 Feb 25  2024 files
# stat
stat cloudclub/
16777232 16220921 drwxr-xr-x 5 nayoung staff 0 160 "Mar 17 21:21:51 2024" "Mar 17 21:21:49 2024" "Mar 17 21:21:49 2024" "Mar 16 14:54:19 2024" 4096 0 0 cloudclub/

 

퍼미션의 종류

퍼미션 의미 파일 디렉터리
r 읽기(read) 권한 파일 읽기 디렉터리의 내용을 볼 수 있음
w 쓰기(write) 권한 파일 저장, 삭제 디렉터리에 파일 저장, 디렉터리 이름 변경, 삭제 가능
x 실행(execution) 권한 파일 실행 디렉터리에 접근(ACCESS)할 수 있음
(cd 명령어 사용 가능 여부)
s SetUID, SetGID 권한 파일 소유자, 그룹 소유자의 권한으로 실행
t Sticky Bit 권한 공유 디렉터리로 사용됨

 

퍼미션 해석

Permission은 맨 앞의 타입(d, -)을 제외하고 3자리씩 끊어서 해석한다. 다음 예시를 살펴보자.

drw-r-xr--

맨 앞의 타입을 제외하고, 3자리 씩 끊으면 다음과 같이 나눌 수 있다.

d | rw- | r-x | r--

세자리 씩 끊었을 때, 앞에서부터 차례대로 User Group Other 의 퍼미션이다.

https://learnubuntu.com/check-file-permissions/

 

타입

퍼미션에서 타입은, 다음과 같이 분류된다.

타입 설명
- 일반 파일
d 디렉터리
l 심볼릭 링크
s 소켓
b c 디바이스 파일

 

퍼미션

퍼미션은 숫자(넘버릭)으로 표현 가능하다.

r = 2^2 = 4
w = 2^1 = 2
x = 2^0 = 1
- = none

3세자리씩 끊어진 각각의 User Group Other 의 권한을 넘버릭으로 표현할 때, 각각을 더해서 표현 가능하다.

rw- = 4+2 = 6
r-x = 4+1 = 5
r-- = 4

따라서 rw-r-x-rr654와 같다.

 

실제 퍼미션 확인 : 파일의 속성

각각의 파일은 총 7가지의 속성을 가지게 된다. 다음의 예시를 살펴보자. 

-rw-r--r--@ 1 nayoung  staff  15 Nov  9 14:46 test.txt
-rw-r--r-- 1 nayoung staff 15 Nov  9 14:46 test.txt
파일 퍼미션 링크 카운터 파일 소유자 그룹 소유자 파일 사이즈 최종 변경 일시 파일명

 

Read / Write / Execution 동작 관련 명령어

파일의 읽기 / 쓰기 / 실행

  • 파일의 읽기(read) : cat more less tail grep
  • 파일의 쓰기(write) : vi 에디터, > >>
  • 파일의 실행(execution) : 파일의 실행은 파일의 내용에 접근한다는 의미이다.

디렉토리의 읽기 / 쓰기 / 실행

  • 디렉터리의 읽기(read) : ls find
  • 디렉터리의 쓰기(write) : touch > >> mkdir rmdir cp mv rm
    • 삭제/생성/이동/복사 등등 모두 data 블럭에 접근할 수 있어야 하고, 이는 쓰기(w) 권한이 있어야 한다
  • 디렉터리의 실행(execution) : 디렉터리의 실행은 디렉터리의 내용에 접근한다는 의미이다. 즉, cd 를 사용(ACCESS)할 수 있느냐 없느냐의 여부이다.

 

 

 

 

728x90