2022 데이터 사이언스/Linux

14. 권한(1): 허가권

gool 2022. 5. 29. 21:16
권한은 파일이나 디렉토리를 사용할 수 있는지를 정하는 개념이다.

 

 

 

Linux에서 권한은 경로만큼이나 중요한 개념이다.

경로가 파일이나 디렉토리를 찾아가는 길이라면,

권한은 실제로 파일이나 디렉토리를 어떻게 사용할 수 있을지를 결정한다.

 

권한은 허가권과 소유권으로 구분된다.

'허가권', '소유권', 그리고 '허가권과 소유권의 적용'의 순서로 살펴볼 예정이다.

 

 

 

허가권의 의미

 

ls -l 명령어로 파일이나 디렉토리의 허가권을 확인할 수 있다.

출력되는 내용 중 개체 형식을 나타내는 맨 첫 글자 뒤의 9개 글자가 허가권을 나타낸다.

 

itbank의 개체 형식 디렉토리를 의미하는 d 뒤에 r, w, x, - 로 이루어진 9개 글자가 허가권이다.

 

 

 

Linux에서는 다음의 8가지 문자로 허가권을 표현한다.

  • r, w, x, - : 일반 권한 표현 문자
  • s, S, t, T : 특수 권한 표현 문자

 

특수 권한은 추후 포스팅에서 다루도록 하고, 일반 권한 표현 문자를 먼저 살펴본다.

각 권한 문자의 의미를 파일과 디렉토리의 경우로 나누어 살펴보면 다음과 같다.

 

(1) r : 읽기

  • 파일 - 파일 내용 읽기; cat, head, tail, more, less, vi 명령어로 파일을 열었을 때 등
  • 디렉토리 - 디렉토리 내부 목록 확인; ls 명령어 사용, GUI 환경에서 폴더에 접근했을 때 등

 

(2) w : 쓰기

  • 파일 - 파일 내용 수정; 문서 편집 후 저장, 리디렉션 기호(>)를 이용하여 덮어쓰기/내용추가 등
  • 디렉토리 - 디렉토리 내부 목록 수정; 디렉토리 내부 하위 파일/디렉토리의 생성/삭제 등

 

(3) x : 실행/접근

  • 파일 - 실행; 파일에 x가 없으면 문서 파일, 파일에 x가 있으면 실행 파일(ex: 명령어)
  • 디렉토리 - 접근; 디렉토리에 x가 없으면 디렉토리 자체 및 내부 항목들을 사용할 수 없음

 

* 디렉토리 접근 권한 매우 중요

 

(4) - : 권한 없음

 

 

 

권한 영역

 

9자리의 권한 문자는 3개씩 끊어서 각각 Owner, Group, Other 영역으로 구분한다.

각 영역에는 r, w, x가 순서대로 들어가고, 특정 권한이 없다면 권한 없음 기호(-)가 대신 들어간다.

 

ex)

 

 Owner      Group      Other

(r   w   x)   (r   -   x)   (r   -   x)

 

  • Owner : 소유자(파일, 디렉토리를 소유 중인 사용자)를 위한 권한
  • Group : 그룹 사용자(파일, 디렉토리를 소유 중인 그룹에 소속된 사용자)를 위한 권한
  • Other : 그 외 사용자(Owner, Group 둘 다 해당되지 않는 사용자)를 위한 권한

 

* 사용자는 위 3개의 영역 중 하나의 영역의 권한만을 적용받는다.

3개의 영역 중 어느 영역의 권한을 적용받을지는 소유권에서 결정한다.

 

 

 

권한 표현 방법

 

허가권의 권한 표현 방법에는 두 가지가 있다.

각각 문자와 숫자를 이용한 방법이다.

 

 

1) 문자를 이용한 방법

 

r, w, x, - 문자를 있는 그대로 차례대로 읽어주는 방법이다.

주의할 점은 권한 없음 기호(-)도 읽어주어야 권한에 착오가 없다는 것이다.

 

 

2) 숫자를 이용한 방법

 

문자를 숫자 값으로 변환하여 사용한다.

계산 방법은 다음과 같다.

 

(1) Owner, Group, Other 영역 분리

(2) r = 4, w = 2, x = 1, - = 0 을 각 영역의 문자에 대입 후 영역별로 합을 계산

(3) 각 영역에서 구한 합에 Owner는 100, Group은 10, Other는 1을 곱해서 전체 합을  계산

 

 

ex)

 

1. rwxr-xr-x

 

 Owner      Group      Other

r   w   x      r   -   x      r   -   x

4   2   1     4   0   1     4   0   1

     7               5               5

  x100          x10            x1

   700     +     50     +      5          =     755

 

 

2. rw-r--r--

 

 Owner       Group       Other

r   w   -       r   -   -       r   -   -

4   2   0     4   0   0     4   0   0

     6               4               4

  x100          x10            x1

   600     +     40     +      4          =     644

 

 

3. 375

 

* 숫자에서 문자로의 변환

Owner 3, Group 7, Other 5   →   --xrwxr-x

 

 

 

허가권 변경

 

chmod 명령어을 사용하여 허가권의 권한값을 변경해줄 수 있다.

 

 

chmod   [옵션]   권한값   대상   [대상]   ...   [대상]

 

 

권한값을 숫자 또는 문자로 입력할 수 있다.

입력 방식에 따라 아래 두 가지 방식으로 분류된다.

  • numeric method : 변경할 권한 전체를 숫자로 입력
  • symbolic method : 영역 문자에 필요한 권한을 +, - 기호로 더하거나 뺌

 

* symbolic method 영역 문자

  • u : owner
  • g : group
  • o : other

 

 

/home/itbank 디렉토리에 test 파일을 생성하여 권한을 변경하는 간단한 실습을 해보자.

chmod 명령어 사용 시 test 앞에는 ./가 생략되었다.

현재 위치의 test 파일의 권한을 변경하겠다는 의미이다.

 

numeric method로 Other 영역에 w 권한 추가

 

symbolic method로 Group 영역에 w 권한 추가

 

 

 

권한 변경 실습 예제

 

 

 

(풀이)

 

먼저 /etc/inittab 파일을 현재 위치로 복사해준다.

 

 

 

(1) numeric method

 

rw--w--wx는 숫자로 변환하면 623이다.

chmod 623 inittab으로 파일의 허가권을 변경해준다.

 

rw--w--wx → 623

 

 

(2) symbolic method

 

256은 문자로 변환하면 -w-r-xrw-이다.

rw--w--wx에서 -w-r-xrw-로 허가권을 변경하기 위해,

어떤 문자가 더해지고 빠져야하는지 생각해보면 된다.

영역 별로 +, - 연산자 뒤에 같은 연산을 하는 문자를 묶어줄 수 있다.

' , ' 로 분리해 명령어를 한 줄에 나타낼 수도 있다.

 

256 → -w-r-xrw-

 

물론, 한 줄 씩 따로 적어줄 수도 있다.

 

 

정석은 아니지만 +, - 연산자가 아닌 등호도 symbolic method에 활용이 가능하다.

-w-r-xrw-의 영역을 분리해 -를 제외하고 각 영역에 포함된 문자를 등호 뒤에 나열하면 된다