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
의 퍼미션이다.
타입
퍼미션에서 타입은, 다음과 같이 분류된다.
타입 | 설명 |
---|---|
- |
일반 파일 |
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-rr
는 654
와 같다.
실제 퍼미션 확인 : 파일의 속성
각각의 파일은 총 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) 권한이 있어야 한다
- 삭제/생성/이동/복사 등등 모두 data 블럭에 접근할 수 있어야 하고, 이는 쓰기(w) 권한이 있어야 한다
- 디렉터리의 실행(execution) : 디렉터리의 실행은 디렉터리의 내용에 접근한다는 의미이다. 즉,
cd
를 사용(ACCESS)할 수 있느냐 없느냐의 여부이다.
728x90