catsridingCATSRIDING|OCEANWAVES
Fundamental

Linux 파일 권한 이해하기

jynn@catsriding.com
Feb 03, 2024
Published byJynn
999
Linux 파일 권한 이해하기

Understand Linux File Permissions

파일의 권한 설정은 리눅스 시스템 관리의 핵심 요소입니다. 이 글에서는 파일 권한이 어떻게 표현되고 동작하는지를 살펴보고, 숫자를 바탕으로 파일 권한을 계산하는 방법을 살펴봅니다. 이러한 지식은 시스템의 보안 강화와 유효한 관리에 도움이 됩니다.

Linux 파일 권한의 개념

리눅스 운영체제에서 모든 파일과 디렉토리는 특정 소유자(Owner)와 그룹(Group)에 속하며, 각각은 상이한 권한이 주어집니다. 사용자와 그룹 외에도 시스템의 나머지 사용자(Other Users)에게도 권한이 부여될 수 있습니다.

이 세 가지 카테고리에 대한 권한 설정은 철저한 시스템 보안을 유지하는데 중요한 역할을 합니다. 사용자별로 적절한 권한을 부여함으로써, 필요한 사람만 해당 파일을 읽고, 수정하고, 실행할 수 있게 관리할 수 있습니다. 이렇게 파일에 대한 접근을 적절하게 제어함으로써 민감한 정보의 유출을 방지하고 시스템의 안정성을 유지할 수 있습니다.

Linux 파일 권한의 종류

리눅스에서 파일 권한은 아래와 같이 세 가지 사용자 카테고리와 세 가지 권한 타입으로 분류됩니다.

Permissions Size User       Group    Date Modified Name
.rw-r--r--@  12k catsriding catshaus  2 Feb 10:59   .DS_Store
.rw-r--r--@  230 catsriding catshaus 16 Dec  2023   .gitconfig
drwxr-xr-x     - catsriding catshaus 24 Oct  2023   .orbstack/
.rw-r--r--@  90k catsriding catshaus 11 Oct  2023   .p10k.zsh
.rw-r--r--@  116 catsriding catshaus  2 Feb 10:50   .yarnrc

파일 권한은 다음과 같은 권한 타입으로 구성됩니다:

  • r or 4: 읽기(Read) 권한
    • 파일을 읽을 수 있는 권한입니다. 즉, 파일의 내용을 볼 수 있습니다.
    • 읽기 권한이 없는 경우 파일에 액세스하려고 하면 시스템이 액세스를 거부합니다.
  • w or 2: 쓰기(Write) 권한
    • 파일을 수정, 삭제, 또는 새로운 파일을 생성할 수 있는 권한입니다.
    • 쓰기 권한이 없는 경우, 해당 파일을 변경하거나 삭제할 수 없습니다.
  • x or 1: 실행(Execute) 권한
    • 파일을 실행시킬 수 있는 권한입니다.
    • 이 권한은 스크립트나 프로그램에 필요합니다. 실행 권한이 없으면 해당 파일을 실행시킬 수 없습니다.
    • 이 권한은 디렉토리에도 적용되며, x 권한이 설정된 디렉토리는 사용자가 디렉토리 내부로 이동할 수 있습니다.

세 가지 사용자 카테고리는 다음과 같습니다:

  • User: 파일의 소유자(Owner)입니다. 소유자는 일반적으로 파일을 생성한 사람이지만, chown 명령을 통해 변경할 수 있습니다.
  • Group: 파일의 소유자와 같은 그룹에 속한 사용자입니다. 그룹은 사용자들을 묶어서 그룹별로 권한을 모두 설정할 수 있게 돕습니다.
  • Other: 그 외의 모든 사용자를 뜻합니다. 이는 파일 소유자나 해당 그룹에 속하지 않는 모든 사람을 가리킵니다.

세 가지 권한 타입과 세 가지 사용자 카테고리를 기반으로 drwxr-xr-x는 다음과 같이 이해할 수 있습니다:

d rwx r-x r-x
- --- --- ---
|  |   |   |
|  |   |   +----→ 기타 사용자들에 대한 권한
|  |   +----→ 그룹 사용자들에 대한 권한
|  +----→ 소유자에 대한 권한
+----→ 'd' : 디렉토리인 경우
+----→ '-' : 일반 파일인 경우
  • 첫 번째 문자('d' or '-')는 해당 항목이 디렉토리인지 일반 파일인지를 나타냅니다. 'd'는 디렉토리를, '-'는 일반 파일을 나타낸다.
  • 그 다음 세 문자('rwx')는 파일 소유자에게 부여된 권한을 나타냅니다. 소유자는 모든 권한을 가지고 있습니다.
  • 다음 세 문자('r-x')는 같은 그룹의 사용자들에게 부여된 권한을 나타냅니다. 이 경우, 그룹 사용자들은 파일을 읽거나 실행할 수 있지만 쓰기 권한은 없습니다.
  • 마지막 세 문자('r-x')는 그 외의 모든 사용자들에게 부여된 권한을 나타냅니다. 이 경우도, 그 외의 사용자들은 파일을 읽거나 실행할 수 있지만 쓰기 권한은 없습니다.

Linux 파일 권한의 합산 및 표현

Linux 상에서 특정 파일에 대한 사용자 권한을 변경하려면 chmod 명령어를 사용합니다. 이 명령어는 권한 변경을 위해 기호형(symbilic) 또는 숫자형(absolute)의 두 가지 인자 형태를 입력으로 받습니다:

  • 기호형(symbilic)
    • 이 방식은 사용자 카테고리(u: user, g: group, o: others, a: all), 동작(+: add, -: remove, =: set), 그리고 부여할 권한(r: read, w: write, x: execute)의 기호를 사용하여 권한을 구성합니다.
    • 예를 들어, chmod g+w filename 명령어는 'filename'이라는 파일에 그룹 사용자에게 쓰기 권한을 추가하라는 의미입니다.
  • 숫자형(absolute)
    • 이 방식은 각 권한(r: read = 4, w: write = 2, x: execute = 1)에 대응하는 숫자를 사용하여 특정 사용자의 권한을 직접 정의합니다.
    • 예를 들어, chmod 755 filename 명령어는 'filename'이라는 파일의 권한을 설정합니다. 여기서 7은 소유자에게 모든 권한(read+write+execute = 4+2+1)을 부여하라는 의미이며, 5는 그룹과 기타 사용자에게 읽기 및 실행 권한(read+execute = 4+1)만 부여하라는 의미입니다.

숫자형으로 권한을 부여하는 것이 더 직관적이라서 주로 사용되며, 한 번에 모든 사용자에 대한 권한을 설정할 수 있는 장점이 있습니다.

$ chmod 764 filename
   |     |    |
   |     |    +----→ 'filename'은 권한을 변경하고자 하는 파일 또는 디렉터리의 이름을 나타냅니다.
   |     |
   |     +----→ '764'은 각 사용자 카테고리에 부여할 권한을 나타내는 숫자 값입니다. 
   |               → 첫 번째 숫자 '7'은 소유자(Owner)에 부여할 권한을 설정합니다. 여기서 '7''rwx'를 나타냅니다. 즉, 소유자는 읽기, 쓰기, 실행의 모든 권한을 갖습니다.
   |               → 두 번째 숫자 '6'은 그룹(Group)에 부여할 권한을 설정합니다. '6''rw-'을 나타내며, 그룹 사용자는 읽기 및 쓰기 권한을 가지지만 실행 권한은 부여받지 않습니다.
   |               → 세 번째 숫자 '4'는 그 외 사용자(Others)에 부여할 권한을 설정합니다. '4''r--'를 뜻하며, 그 외 사용자는 파일을 읽을 수만 있고 쓰거나 실행할 수는 없습니다.
   |
   +----→ 'chmod'는 파일 또는 디렉터리의 권한을 변경하는 명령어입니다.
  • Linux