본문 바로가기
리눅스,네트워크

리눅스(Linux) 권한 관리 - Permission

by 데이널 2023. 12. 18.

이번 포스팅에서는 리눅스에서 권한 관리에 대해 살펴보도록 하겠습니다. 리눅스에서는 파일과 디렉터리에 대해 허가권(permission)과 소유권(ownership)으로 관리합니다. 이 글에서는 Permission에서 대해 어떻게 관리하고 사용하는지 알아 보록 하겠습니다. 

 

 

Permission이란

많은 개발자들이 폴더에 접근 권한이 없어 진입이 안된다거나, 실행 파일에 권한이 없어 실행하지 못해 error가 나는 상황을 겪어보았을 것입니다. 그 이유는 권한, 즉 Permission을 제대로 주지 않아 생기는 문제들이죠. 인증, 권한 부여, Permission은 각각 아래와 같이 정의할 수 있습니다. 

  • 인증 : 자신이 누구인지 확인 받는 절차
  • 권한 부여 : 인증받은 주체가 사용할 수 있는 권한
  • Permission : 사용자들이 접근할 수 있는 권한

Permission과 Ownership
Permission과 Ownership

 

첫 번째 글자 의미

약자 철자 의미
_   일반 파일
d directory 디렉토리
l symbolic link 심볼릭 링크

 

뒤 9개 글자는(rwx)

이 글자는 r(읽기), w(쓰기), x(실행) 권한이 있음을 의미하고, 권한이 없을 경우 _(언더바)로 표현합니다. 한 가지 주의해야 할 점이 디렉터리냐 파일이냐에 따라 rwx의 의미가 조금씩 다릅니다. 아래를 표를 참고하시기 바랍니다. 예를 들어, 디렉터리에 실행(x) 권한이 없는데, 읽기(r) 권한이 있다고 해도 내부 파일이 볼 수가 없습니다. 왜냐하면, 파일 리스트를 보는 것 자체가 실행하는 권한이 필요하기 때문입니다.  

 

디렉터리

약자 철자 의미 개념 설명
r read 읽기 디렉토리 내부 파일 무엇이 있는지 보기
w wrtie 쓰기 디렉토리 내부 파일 생성, 삭제, 이동
x excute 실행 디렉토리 실행기능 내부 이동 수행

 

파일

약자 철자 의미 개념 설명
r read 읽기 파일 내용(code) 보기
w wrtie 쓰기 파일 내용(code) 수정
x excute 실행 파일 실행기능(프로그램 기능) 수행

권한(Permission) 표현

rwx를 숫자로 부르는 또 다른 방식이 있습니다. 2진수를 이용하는 방법인데요. 읽기 | 쓰기 | 실행 권한의 각 자리를 비트로 1과 0으로 표현하는 방식입니다. 그렇게 하면 rwx 모두 권한이 있을 경우 아래와 같이 1 1 1 로 표시됩니다. 그것을 각 자릿수에 따라 2의 2승(4), 2의 1승(2), 2의 0(1) 승과 곱해 줍니다. 결과는 4x1 + 2x1 + 1x1 = 7이 됩니다. 즉 퍼미션 권한 rwx는 자리의 권한 유무에 따라 0 ~ 7까지 표현됩니다. 만약 rwxrxwrwx 라면 숫자로 777로 표현할 수 있습니다. 이 방식으로 chmod라는 명령어로 Permission 권한을 부여하게 됩니다.   

Linux Permission
Linux Permission

권한 변경

chmod 명령은 권한을 변경하는 데 사용됩니다. 예를 들어 chmod 777 file.txt는 사용자에게 실행 권한을 추가합니다.

 

권한 보기

ls 명령은 권한을 표시합니다. 더 자세한 내용을 보려면 ls -l으로 볼 수 있죠. 

 

권한(Permission)의 Ownership

그런데 rxw+rxw+rxw 이렇게 3개 세트가 있습니다. 이것은 유저 소유자가 가질 수 있는 권한인데요. 소유자는 파일에 대한 주체를 의미합니다. 특정한 설정이 없다면, 보통 파일을 만들 때 접속한 계정으로 소유권이 부여됩니다. 소유권은 아래와 같은 리스트에서 첫 번째가 소유자, 두 번째가 그룹을 의미합니다.  

 

리눅스 소유권
리눅스 소유권

결국 Permission의 3개 세트는 아래 그림처럼 첫 번째가 User권한, 두 번째가 Group권한, 세 번째가 그 외 User들의 권한을 의미합니다.  

 

리눅스 권한 소유권
리눅스 권한 소유권

 

마무리

리눅스 권한은 안전하고 체계적인 파일 시스템을 유지하는 데 중요한 역할을 합니다. 사용자는 파일 및 디렉터리에 액세스 할 수 있는 User를 제어할 뿐 아니라 해당 파일 및 디렉터리에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 권한을 이해하고 관리하는 것이 중요한 이유는 권한을 과하게 줄 경우 시스템이 관리가 되지 않습니다. 그래서 user별로 적절한 권한만을 부여해야 합니다.