[Linux] 소유권 / 허가권 / 특수권한 / 디스크쿼터


🔹 리눅스 시스템의 모든 파일과 디렉터리에는 소유권(Ownership)과 허가권(접근권한, Permission)이 부여된다. 🔹



🐧 소유권(Ownership)


  • 임의의 파일 또는 디렉터리에 대해 사용자와 그룹들의 소유 권한을 나타낸 것

    • 그룹 : 사용자들의 시스템 운영 특성에 따라 묶어놓은 것

    • 같은 그룹 -> 동일한 소유권과 작업 권한을 가짐

  • chown : 파일/디렉터리의 사용자 소유권과 그룹 소유권 변경

    • 사용자 소유권 변경

        #chown [옵션] 소유자 파일명
      
    • 그룹 소유권 변경

        #chown [옵션] :그룹명 파일명
      
    • 옵션

      • -R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경
  • chgrp : 파일/디렉터리의 그룹 소유권 변경

      #chgrp [옵션] 그룹명 파일명
    
    • 옵션

      • -R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경
    • chown은 소유자/소유그룹 모두 변경 가능, chgrp은 그룹 소유권만 변경



🐧 허가권(Permission)


  • ls -l 명령어로 파일 유형과 허가권을 알 수 있음

    • 첫 번째 자리는 파일 유형을 기호로 정의

    • 파일은 일반 파일, 디렉터리 파일, 특수 파일로 나뉨

    • ls -l /dev명령어로 특수 파일 확인 가능

    • 두 번째 자리 ~ 열 번째 자리는 파일 접근 권한을 정의

    • 리눅스는 사용자별로 파일 권한 부여

    • 파일 소유자(owner), 그룹 소유자(group), 기타 사용자(others or public)로 파일 사용자를 구분

    • 파일 권한 : 읽기 read / 쓰기 write / 실행 execute

    • 읽기, 쓰기, 실행의 접근 제한 표시는 하이픈(-)으로 나타냄

    • 사용자별 권한은 기호 모드(symbolic mode) 또는 8진수 숫자 모드(numeric mode)로 표시

  • 파일 유형

    기호 파일 유형
    - 일반 파일
    d 디렉터리 파일
    b 블록단위로 읽고 쓰는 블록 장치(하드디스크, CD/DVD 등의 저장 장치) 특수 파일
    c 문자 단위로 읽고 쓰는 문자 장치(마우스, 키보드, 프린터 등의 입출력 장치) 특수 파일
    l 기호적 링크로 바로가기 아이콘 역할 수행, 연결되어 있는 파일과 실제 파일은 다른 곳에 존재
    p 파이프
    s 소켓
  • 🐧 사용자별 권한

      사용자권한 그룹권한 기타사용자권한
    기호모드 r    w    x r    w    x r    w    x
    8진수숫자모드 4    2    1 4    2    1 4    2    1
    • ex) 기호 권한 rw-rw-r-- = 숫자 권한 ‘664’ = 파일 소유자와 그룹 사용자는 파일에 대해 읽고 쓰기가 가능하며 실행 권한은 없음, 그 외 사용자들은 읽기 기능만 가짐
  • 파일 유형에 따른 권한

      일반파일 디렉터리파일 특수파일
    읽기(r) 파일 내용 읽기 디렉터리 내 파일 목록 읽기 read()로 파일 읽기
    쓰기(w) 파일 수정/삭제 디렉터리 내 파일 생성/삭제 write()로 파일 내용 변경
    실행(x) 파일 실행 cd 명령어로 디렉터리 이동 n/a
  • chmod : 파일이나 디렉터리의 접근 허가권 변경

      #chmod [옵션] 파일명
    
    • 옵션

      • -R : 하위 디렉터리에 포함된 모든 디렉터리 및 파일의 권한 변경
    • 숫자 모드 또는 기호 모드를 이용해 권한 변경 가능

        기호모드 의미
      사용자 u 소유자
        g 그룹
        o 기타사용자
        a 모든사용자(u+g+o)
      연산자 + 허가권 부여
        - 허가권 제거
        = 특정 사용자에게 허가권 지정
      권한 r 읽기
        w 쓰기
        x 실행
      • ex) chmod u+w : 소유자에게 쓰기 권한 부여 / chmod o=rx : 기타 사용자에게 읽기, 실행 권한 부여
  • umask : 새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정

      umask[옵션][값]
    
    • 디폴트 권한 값을 변경

    • 파일의 기본 권한 : 666

    • 디렉터리의 기본 권한 : 777

    • 파일이나 디렉터리 생성 시 기본 허가권 설정 값 = ( 디폴트 권한 값 - 설정한 umask 값 )
      • ex) umask가 022인 경우 디폴트 파일 권한은 644, 디폴트 디렉터리 권한은 755로 변경됨
    • 옵션
      • -S : umask 값을 문자로 표기



🐧 특수 권한


  • SetUID / SetGID

    • 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능

    • 프로세스가 사용자보다 높은 수준의 접근을 요구할 때 파일 접근 제한으로 인해 원활한 기능을 제공할 수 없는 문제점을 해결하기 위한 방법

    • 프로그램을 실행하는 동안(사용자가 사용할 떄만) SetUID는 프로세스를 파일의 소유자와 같은 권한으로, SetGUID는 프로세스를 파일의 그룹과 같은 권한으로 실행

    • SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가짐

  • 특수 권한의 표기 방법

      코드   절대값
    SetUID s u+s 4000
    SetGID s g+s 2000
    Sticky bit t o+t 1000
  • Sticky bit

    • 일반적으로 공용 디렉터리 사용 시 sticky bit를 설정해 사용

    • sticky bit가 설정되어 있는 디렉터리 안 내용은 해당 파일의 소유자나 root만 변경 가능 -> 공용 디렉터리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호

    • 특정 응용 프로그램이 다른 응용 프로그램에서 생성한 파일을 삭제하지 못하는 권한 설정

    • 설정된 디렉터리에는 누구든 접근 가능하며, 파일 생성 가능

    • 생성된 sticky bit 파일 삭제는 소유자(파일 생성자)와 관리자만 가능

    • 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 생성



🐧 디스크 쿼터(Disk Quota)


  • 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한

  • 사용자나 그룹이 가질 수 있는 inode의 개수 제한 or 사용자나 그룹에게 할당된 디스크 블록 수 제한(블록 단위의 용량 제한)

  • 쿼터는 사용자별, 파일 시스템별로 동작

  • 그룹 단위로 용량 제한 가능 -> 웹호스팅 서비스를 하는 경우 유용

    • quotaoff : 쿼터 서비스 비활성화

    • quotacheck : 파일 시스템의 디스크 사용 상태 검색

    • edquota : 편집기를 이용해 사용자나 그룹에 디스크 사용량을 할당

    • setquota : 편집기가 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당

Categories:

Linux   리눅스