Linux 권한 소개

소개

리눅스는 Unix 개념을 기반으로 하는 다중 사용자 운영 체제로서, 파일 소유권과 권한을 사용하여 파일 시스템 수준에서 보안을 제공합니다. 클라우드 서버를 신뢰할 수 있게 관리하기 위해서는 소유권과 권한이 어떻게 작동하는지에 대한 충분한 이해가 필수적입니다. 파일 소유권과 권한을 다루는 데는 많은 복잡성이 있지만, 이 튜토리얼에서는 좋은 소개를 제공할 것입니다.

이 튜토리얼에서는 리눅스 소유권과 권한을 보고 이해하는 방법에 대해 다룰 것입니다. 권한을 수정하는 방법에 대한 자습서를 찾고 있다면, 리눅스 권한 기본 사항 및 VPS에서 Umask 사용 방법을(를) 읽어보십시오.

전제 조건

이 시리즈의 이전 자습서에서 다루는 개념을 이해하는지 확인하십시오:

이 튜토리얼을 따르려면 클라우드 서버에 액세스해야 합니다. DigitalOcean 드롭렛을 생성하는 방법을 따를 수 있습니다.

사용자 정보

소개에서 언급했듯이 Linux는 다중 사용자 시스템입니다. 소유권과 권한이 적용되는 엔터티인 사용자 및 그룹의 기본 사항을 이해해야 합니다. 사용자가 무엇인지 살펴보겠습니다.

Linux에는 두 가지 유형의 사용자가 있습니다: 시스템 사용자일반 사용자. 전통적으로 시스템 사용자는 시스템에서 대화형이 아닌 또는 백그라운드 프로세스를 실행하는 데 사용되며, 일반 사용자는 대화형으로 로그인하고 프로세스를 실행하는 데 사용됩니다. Linux 시스템을 처음 초기화하고 로그인할 때, OS가 의존하는 서비스를 실행하기 위해 이미 많은 시스템 사용자가 생성된 것을 알 수 있습니다. 이것은 정상입니다.

시스템의 모든 사용자를 보려면 /etc/passwd 파일의 내용을 확인하면 됩니다. 이 파일의 각 줄에는 단일 사용자에 대한 정보가 포함되어 있으며, 이 정보는 사용자 이름으로 시작합니다(첫 번째 : 전에 나오는 이름). passwd 파일의 내용을 출력하려면 cat을 사용할 수 있습니다:

  1. cat /etc/passwd
Output
… sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh

슈퍼 사용자

두 가지 사용자 유형 외에도 슈퍼 사용자 또는 루트 사용자가 있습니다. 이 사용자는 모든 파일 소유권 및 권한 제한을 재정의할 수 있는 능력을 갖고 있습니다. 실제로 이는 슈퍼 사용자가 자체 서버의 모든 것에 액세스할 수 있는 권한이 있음을 의미합니다. 이 사용자는 시스템 전체적인 변경을 수행하는 데 사용됩니다.

또한 “슈퍼 사용자 권한”을 가진 다른 사용자 계정을 구성하는 것이 가능합니다. 이는 종종 sudo로 참조되며, 임시로 슈퍼 사용자 권한을 얻을 수 있는 권한이 있는 사용자는 관리자 수준의 명령 앞에 sudo를 사용합니다. 사실, 시스템 관리 작업에 대한 sudo 권한을 가진 일반 사용자를 만드는 것이 최상의 방법으로 간주됩니다. 이렇게 하면 루트 사용자 계정을 사용하는 것에 보다 보수적일 수 있습니다.

그룹에 대해

그룹은 영구적인 사용자의 모음입니다. 사용자는 기본 그룹에 속하고, 서버의 다른 그룹 중 하나의 구성원이 될 수도 있습니다.

사용자와 마찬가지로 /etc/passwd에서와 같이 /etc/group 파일을 참조하여 시스템의 모든 그룹과 그 멤버를 볼 수 있습니다. 이 문서는 그룹 관리에 대해 다루지 않습니다.

이제 사용자와 그룹이 무엇인지 알았으니 파일 소유권과 권한에 대해 이야기해 봅시다!

소유권과 권한 보기

Linux에서 모든 파일은 단일 사용자와 단일 그룹에 의해 소유되며 고유한 접근 권한을 가지고 있습니다. 파일의 소유권과 권한을 보는 방법을 살펴보겠습니다.

파일의 권한을 보는 가장 일반적인 방법은 ls 명령을 장문 옵션 -l과 함께 사용하는 것입니다. 예를 들어 ls -l myfile와 같이 입력하면 파일의 권한을 볼 수 있습니다. 현재 디렉토리의 모든 파일의 권한을 보려면 myfile 인수 없이 명령을 실행합니다. 다음과 같이:

  1. ls -l

참고:홈 디렉토리가 비어 있고 아직 볼 파일을 만들지 않았다면 다음 명령을 사용하여 /etc 디렉토리의 내용을 나열하여 따라할 수 있습니다: ls -l /etc

다음은 각 열의 출력 라벨이 있는 ls -l 출력의 예제 스크린샷입니다:

각 파일은 모드(권한을 포함), 소유자, 그룹 및 이름이 표시됩니다. 모든 해당 글자와 하이픈이 의미하는 것을 설명하는 데 도움이 되도록 모드 열을 구성 요소로 나누어 보겠습니다.

이해 모드

위 예제의 첫 번째 파일의 모드 메타데이터를 설명하기 위해, 그룹화와 글자의 의미를 설명하는 데 도움이 되는 내용을 여기에 제공합니다:

파일 유형

리눅스에서는 두 가지 유형의 파일이 있습니다: 일반특수. 파일 유형은 파일의 모드의 첫 번째 문자에 의해 표시됩니다 — 이 가이드에서는 이를 “파일 유형 필드”라고 지칭할 것입니다.

일반 파일은 파일 유형 필드에 하이픈 (-)이 포함되어 있는 것으로 식별할 수 있습니다. 일반 파일은 데이터 또는 기타 모든 것을 포함할 수 있습니다. 특수 파일과 구별하기 위해 이러한 파일을 일반 파일 또는 일반 파일이라고 합니다.

특수 파일은 파일 유형 필드에 하이픈이 아닌 문자(예: 문자)가 포함되어 있으며, 일반 파일과는 다르게 OS에서 처리됩니다. 파일 유형 필드에 나타나는 문자는 특정 파일이 어떤 종류의 특수 파일인지를 나타냅니다. 예를 들어 가장 일반적인 특수 파일인 디렉터리는 파일 유형 필드에 나타나는 d 문자에 의해 식별됩니다(이전 스크린샷에서와 같이). 다른 종류의 특수 파일도 있습니다.

권한 클래스

다이어그램에서 볼 수 있듯이 모드 열은 파일 유형을 나타내며, 사용자(소유자), 그룹 및 기타 세 가지 권한 클래스를 나타냅니다. 클래스의 순서는 모든 Linux 시스템에서 일관됩니다.

세 가지 권한 클래스는 다음과 같이 작동합니다:

  • 사용자: 파일의 소유자가 이 클래스에 속합니다.
  • 그룹: 파일의 그룹 멤버가 이 클래스에 속합니다. 그룹 권한은 특정 파일에 대해 여러 사용자에게 권한을 할당하는 유용한 방법입니다.
  • 기타: 이 파일의 사용자 또는 그룹 클래스의 일부가 아닌 모든 사용자가 이 클래스에 속합니다.

기호적 권한 읽기

주의를 기울여야 할 다음 항목은 세 개의 문자 세트입니다. 각 클래스가 특정 파일에 대해 가지는 권한을 상징적으로 나타냅니다.

각 세트에서 읽기, 쓰기 및 실행 권한은 다음과 같은 방식으로 표시됩니다:

  • 읽기: 첫 번째 위치에 r로 표시됩니다
  • 쓰기: 두 번째 위치에 w로 표시됩니다
  • 실행: 세 번째 위치에 x로 표시됩니다. 특별한 경우에는 여기에 다른 문자가 있을 수 있습니다.

A hyphen (-) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--, the file is “read-only” to the group that is associated with the file.

읽기, 쓰기, 실행 이해하기

이제 파일의 권한을 읽는 방법을 알았으므로 각 권한이 실제로 사용자가 무엇을 할 수 있게 하는지 알아야 합니다. 이 자습서에서는 각 권한을 개별적으로 다룰 것이지만, 파일과 디렉터리에 유용한 액세스를 허용하기 위해 종종 함께 사용됨을 기억하십시오.

다음은 세 가지 권한 유형이 사용자에게 부여하는 액세스를 설명한 것입니다:

읽기

일반 파일의 경우 읽기 권한은 사용자가 파일의 내용을 볼 수 있게 합니다.

디렉터리의 경우 읽기 권한은 사용자가 디렉터리에 있는 파일의 이름을 볼 수 있게 합니다.

쓰기

일반 파일의 경우 쓰기 권한은 사용자가 파일을 수정하고 삭제할 수 있게 합니다.

디렉터리의 경우, 쓰기 권한은 사용자가 디렉터리를 삭제하고, 내용을 수정(파일 생성, 삭제, 이름 변경)하며, 사용자가 쓰기 권한을 가진 파일의 내용을 수정할 수 있게 합니다.

실행

일반 파일에 대해 실행 권한은 사용자가 파일을 실행(실행)할 수 있게 합니다 — 사용자는 또한 읽기 권한을 가져야 합니다. 실행 권한은 사용자가 실행할 수 있도록 실행 가능한 프로그램과 쉘 스크립트에 설정되어야 합니다.

디렉터리의 경우, 실행 권한은 사용자가 접근하거나 (즉, cd) 디렉터리에 들어가고 디렉터리의 파일에 대한 메타데이터(정보는 ls -l에 나열됨)에 접근할 수 있게 합니다.

모드 예시(및 권한)

이제 파일의 모드를 읽는 방법과 각 권한의 의미를 이해하였으므로, 개념을 종합하기 위해 몇 가지 일반적인 모드의 예를 간단한 설명과 함께 볼 수 있습니다.

  • -rw-------: 소유자만 접근할 수 있는 파일
  • -rwxr-xr-x: 시스템의 모든 사용자가 실행할 수 있는 파일. “전 세계적으로 실행 가능한” 파일
  • -rw-rw-rw-: 시스템의 모든 사용자가 수정할 수 있는 파일. “전 세계적으로 쓰기 가능한” 파일
  • drwxr-xr-x: 시스템의 모든 사용자가 읽고 액세스할 수 있는 디렉터리입니다.
  • drwxrwx---: 소유자와 그룹이 수정 가능한(내용 포함) 디렉터리입니다.
  • drwxr-x---: 그룹이 액세스할 수 있는 디렉터리입니다.

일반적으로 파일의 소유자가 가장 많은 권한을 가지고 있습니다. 일반적으로 그룹기타 클래스는 소유자의 권한의 하위 집합만 가지고 있습니다(동등하거나 더 적음). 이는 파일이 특정한 이유로 필요한 사용자에게만 액세스 가능해야하기 때문에 합리적입니다.

또 다른 중요한 점은 많은 권한 조합이 가능하지만 대부분의 상황에서는 일부만 합리적이라는 것입니다. 예를 들어, 쓰기 또는 실행 액세스는 거의 항상 읽기 액세스와 함께 제공됩니다. 왜냐하면 읽지 못하는 것을 수정하거나 실행하는 것은 어렵기 때문입니다.

결론

이제 Linux에서 소유권과 권한이 어떻게 작동하는지에 대해 이해했을 것입니다. 이러한 권한을 수정하는 방법을 배우려면 chown, chgrp, 및 chmod를 사용하는 방법에 대해 리눅스 권한 기본 및 VPS에서 Umask 사용하기를 참조하십시오.

리눅스 기본 지식에 대해 더 알고 싶다면, 이 시리즈의 다음 튜토리얼을 읽어보세요. 리눅스 I/O 리다이렉션 소개를 참조하세요.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions