본문 바로가기
Base/Linux(CentOS)

6. 권한 (허가권, 소유권, 특수권한)

by 귀멸 2022. 6. 20.

0. 권한
 - 파일/디렉토리를 사용할 수 있는지 여부를 정하는 개념
 - 허가권과 소유권으로 구분
    > 허가권 + 소유권 = 권한

1. 허가권
 - ls -l 명령을 입력했을 때 나오는 출력 내용 중 개체 형식을 나타내는 첫글자 뒤에 오는 9개 글자가 허가권
 - 8가지 문자로 권한을 표현 : r, w, x, -, s, S, t, T
   
   r, w, x, - : 일반 권한 표현 문자
   
   s, S, t, T : 특수 권한 표현 문자
 
 - r : 읽기, w : 쓰기, x : 실행/접근, - : 권한없음
   
   r : 파일        → 파일 내용읽기                   ; cat, head, tail, more, less, vi로 열었을 때 등
       디렉토리 → 디렉토리 내부 목록 확인   ; ls, GUI 환경에서 폴더에 들어갔을 때 등
   
   w : 파일       → 파일 내용 수정                     ; 문서 편집 후 저장, > 기호를 이용하여 덮어쓰기/내용추가 등
       디렉토리  → 디렉토리 내부 목록을 수정 ; 디렉토리 내부 하위 파일/디렉토리 생성 및 삭제 등

   x : 파일       → 실행             ; 파일 x가 없으면 일반 문서 파일, 파일에 x가 있으면 실행 파일     
       디렉토리 → 접근             ; 디렉토리가 x가 없으면 디렉토리 자체 및 내부의 항목들을 사용할 수 없다

 - 9자리의 권한 문자를 3개씩 끊어서 Owner, Group, Other 영역으로 구분
   > 각 영역에는 r, w, x가 순서대로 들어가고, 특정 권한이 없다면 해당 위치에 - 이 들어간다

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

    * 3개의 영역 중 어느 영역의 권한을 적용 받는지에 대한 내용은 소유권에서 결정

 
# 권한 표현 방법
    문자를 이용한 방법 : r, w, x, - 문자를 차례대로 읽어주는 방법

    숫자를 이용한 방법 : 문자를 바탕으로 숫자 값을 계산
    * 계산방법
      1) 영역분리
      2) r = 4, w = 2, x = 1, - = 0을 각 영역의 문자에 대입후 영역별로 합 계산
      3) 각 영역에서 구한 값에 Owner는 100, Group은 10 ,Other는 1을 곱해서 전체 합을 계산

   ex)
    1. rwxr-xr-x  > 755

    421 401 401
      7   5   5

    700 50 5    = 755

    2. rw-r--r-- > 644
    
    3. 375 > -wxrwxr-x

# 허가권 변경
 
  chmod [옵션] 권한값 대상 [대상] ... [대상]

  * 권한 값을 숫자/문자로 입력
    숫자로 입력하면 numeric method   ; 변경한 권한 전체를 숫자로 입력
    문자로 입력하면 symbolic method  ; 영역 문자에 필요한 권한을 +. - 기호를 이용하여 더하거나 빼준다.
    > symbolic method 에서 사용하는 영역 문자
      u : Owner
      g : group
      o : other

   chmod 646 test
   chmod g+w test
   chmod g+rx-w test    묶어서 가능
   chmod u-r,g-w+rx,o+r-x test   콤마로 연결 가능
   chmod u=w,g=rx,o=rw inittab   =으로 한번에 지정가능

2. 소유권
 - 파일 / 디렉토리를 어느 사용자와 그룹이 소유하고 있는지 나타내는 권한
   > ls -l 명령으로 출력되는 정보 중 랭크 개수 뒤에 나오는 사용자명과 그룹명이 소유권
 - 소유권을 두 개의 영역으로 구분
   > 앞에 나오는 정보가 계정명(UID), 파일/디렉토리를 소유하고 있는 사용자
      뒤에 나오는 정보가 그룹명(GID), 파일/디렉토리를 소유하고 있는 그룹

 - 소유권 변경
      chown [옵션] 권한값 대상 [대상] ... [대상]

      * 권한값 작성 방식
         UID           > 소유권의 UID 지정 ( : 기호 대신에 . 기호 사용가능)
         UID:GID    > 소유권의 UID, GID 지정
         UID:          > 소유권의 UID, GID를 특정 사용자의 UID, GID를 소유권에 넣어줌
               :GID    > 소유권의 GID 영역 변경

## 허가권과 소유권이 적용되는 방식 (중요 !!!)
 1) 작업 주체와 작업 대상을 추려내고 그 둘의 UID, GID 확인
       작업 주체 : 작업을 수행하는 (= 명령을 입력하는) 사용자  >> 사용자 정보 중 UID, GID(/etc/passwd 파일, id 명령어)
       작업 대상 : 작업(=명령)의 대상이 되는 파일/디렉토리     >> 소유권의 UID, GID(ls 명령어 -l 옵션이나 -n 옵션)

 2) 작업 주체와 작업 대상의 UID, GID 비교
    ㄱ) UID 비교 >> UID가 일치하면 Owner 영역 권한 적용, 일치하지 않으면 GID 비교
    ㄴ) GID 비교 >> GID가 일치하면 Group 영역 권한 적용, 일치하지 않으면 other 영역 권한 적용

   * root 사용자는 권한의 영향을 받지 않는다.

 


3. 특수 권한
 - 특이한 동작을 하는 권한

 - setUID, setGID, sticky bit 3가지의 특수 권한이 있다.

   4777   r w s r w x r w x   : setUID
   2777   r w x r w s r w x   : setGID
   1777   r w x r w x r w t   : sticky bit (setbit)

  * x 위치의 문자가 s/S/t/T로 변경
   (이때, x권한이 있는 상태였다면 소문자 s,t를 사용하고 x권한이 없는 상태였다면 대문자 S/T를 사용)

  ex>
     rwsr-xr-x : 4755
     rwSr-xr-x : 4655

# sticky bit 
 - 디렉토리에 설정하는 특수 권한

 - 디렉토리 내부에 파일/디렉토리 생성은 권한만 있으면 누구나 가능하지만
   파일/디렉토리 삭제는 대상의 소유자(소유권의 UID)와 관리자만 가능

# setUID
 - 실행 파일에 설정하는 특수 권한

 - 파일이 동작하는 동안 owner의 권한을 사용할 수 있도록 해주는 특수 권한
   > 동작하는 동안 owner가 된다라고 생각

# umask
 - 생성하는 파일/디렉토리의 허가권을 제어하는 값
   > 사용자 계정마다 부여되어 있는 값
 - 파일/디렉토리의 일반적인 최대 권한 값에서 생성 작업을 입력한 사용자의 umask 값을 뺀 나머지가
   만들어질 파일/디렉토리의 권한 값
  (일반적인 파일 최대 권한 : 666, 디렉토리 최대권한 : 777)
 - 숫자로만 보고 계산을 하면 절대로 안됨
   (파일의 기본 권한에는 x가 없기 때문에 계산을 하지 않음)

   ex>
  
  형식
  umask : 현재 사용자의 umask 값 확인
  umask <값> : 현재 가용자의 umask 값 변경

'Base > Linux(CentOS)' 카테고리의 다른 글

8. 파티션과 마운트 (Partition / mount)  (0) 2022.06.21
7. 응용프로그램 설치 tar/ rpm/ yum  (0) 2022.06.20
5. 사용자계정과 그룹  (0) 2022.06.19
4. VI(M) 에디터  (0) 2022.06.18
3. 기본 명령어 모음  (0) 2022.06.18

댓글