웹사이트 검색

Linux 권한 소개


소개

Linux는 파일 시스템 수준에서 보안을 제공하기 위해 파일 소유권권한이라는 Unix 개념을 기반으로 하는 다중 사용자 OS입니다. 클라우드 서버를 안정적으로 관리하려면 소유권과 권한이 작동하는 방식을 제대로 이해하고 있어야 합니다. 파일 소유권과 권한을 다루는 데는 많은 복잡성이 있지만 이 자습서에서는 좋은 소개를 제공할 것입니다.

이 튜토리얼에서는 Linux 소유권 및 권한을 보고 이해하는 방법을 다룹니다. 권한을 수정하는 방법에 대한 자습서를 찾고 있다면 Linux 권한 기본 사항 및 VPS에서 Umask를 사용하는 방법을 읽을 수 있습니다.

전제 조건

이 시리즈의 이전 자습서에서 다룬 개념을 이해해야 합니다.

  • Linux 터미널 소개
  • 기본 Linux 탐색 및 파일 관리

이 자습서를 따르려면 클라우드 서버에 대한 액세스 권한이 필요합니다. 이 가이드를 따라 DigitalOcean 물방울을 생성할 수 있습니다.

사용자 정보

소개에서 언급했듯이 Linux는 다중 사용자 시스템입니다. 소유권과 권한이 적용되는 항목이기 때문에 소유권과 권한에 앞서 Linux 사용자그룹의 기본 사항을 이해해야 합니다. 사용자가 무엇인지부터 시작하겠습니다.

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

/etc/passwd 파일의 내용을 보면 시스템의 모든 사용자를 볼 수 있습니다. 이 파일의 각 줄에는 사용자 이름(첫 번째 : 앞의 이름)으로 시작하는 단일 사용자에 대한 정보가 포함되어 있습니다. cat을 사용하여 passwd 파일의 내용을 인쇄할 수 있습니다.

  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 권한이 있는 일반 사용자를 만드는 것이 모범 사례로 간주됩니다. 루트 사용자 계정을 보수적으로 사용하십시오.

그룹 정보

그룹은 0명 이상의 사용자 모음입니다. 사용자는 기본 그룹에 속하며 서버에 있는 다른 그룹의 구성원이 될 수도 있습니다.

사용자에 대한 /etc/passwd에서와 마찬가지로 /etc/group 파일을 보면 시스템의 모든 그룹과 구성원을 볼 수 있습니다. 이 문서에서는 그룹 관리에 대해 다루지 않습니다.

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

소유권 및 권한 보기

Linux에서 모든 파일은 단일 사용자와 단일 그룹이 소유하며 고유한 액세스 권한이 있습니다. 파일의 소유권과 권한을 보는 방법을 살펴보겠습니다.

파일의 권한을 보는 가장 일반적인 방법은 긴 목록 옵션 -l과 함께 ls를 사용하는 것입니다. ls -l myfile. 현재 디렉토리에 있는 모든 파일의 권한을 보려면 다음과 같이 myfile 인수 없이 명령을 실행하십시오.

  1. ls -l

참고: 빈 홈 디렉토리에 있고 아직 볼 파일을 만들지 않은 경우 다음 명령을 실행하여 /etc 디렉토리의 내용을 나열하여 따라갈 수 있습니다. >ls -l /etc

다음은 각 출력 열의 레이블이 있는 ls -l 출력의 예시 스크린샷입니다.

각 파일에는 해당 모드(권한 포함), 소유자, 그룹 및 이름이 나열됩니다. 모든 문자와 하이픈의 의미를 설명하기 위해 모드 열을 구성 요소로 분해해 보겠습니다.

이해 모드

모든 그룹화 및 문자의 의미를 설명하는 데 도움이 되도록 위 예에서 첫 번째 파일의 모드 메타데이터 분석은 다음과 같습니다.

파일 형식

Linux에는 일반특수의 두 가지 유형의 파일이 있습니다. 파일 유형은 파일 모드의 첫 번째 문자로 표시됩니다. 이 가이드에서는 이를 "파일 유형 필드\라고 합니다.

일반 파일은 파일 유형 필드에서 하이픈(-)으로 식별할 수 있습니다. 일반 파일에는 데이터 또는 기타 항목이 포함될 수 있습니다. 특수 파일과 구별하기 위해 일반 또는 일반 파일이라고 합니다.

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

권한 클래스

다이어그램에서 모드 열이 파일 형식을 나타내고 그 뒤에 사용자(소유자), 그룹 및 기타의 세 가지 권한 클래스 또는 클래스가 있음을 알 수 있습니다. 클래스의 순서는 모든 Linux 시스템에서 일관됩니다.

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

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

기호 권한 읽기

다음으로 주목해야 할 것은 세 캐릭터 세트입니다. 각 클래스가 주어진 파일에 대해 갖는 권한을 기호 형식으로 나타냅니다.

각 트라이어드에서 읽기, 쓰기 및 실행 권한은 다음과 같은 방식으로 표시됩니다.

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

이러한 문자 중 하나를 대신하는 하이픈(-)은 각 클래스에 해당 권한을 사용할 수 없음을 나타냅니다. 예를 들어, 파일의 그룹(두 번째) 트라이어드가 r--인 경우 파일은 파일과 연결된 그룹에 대해 "읽기 전용\입니다.

읽기, 쓰기, 실행 이해

이제 파일의 권한을 읽는 방법을 알았으므로 각 권한이 실제로 사용자에게 허용하는 것이 무엇인지 알아야 합니다. 이 자습서에서는 각 권한을 개별적으로 다루지만 파일 및 디렉터리에 대한 유용한 액세스를 허용하기 위해 종종 서로 조합하여 사용된다는 점을 명심하십시오.

다음은 세 가지 권한 유형이 사용자에게 부여하는 액세스에 대한 분석입니다.

읽다

일반 파일의 경우 읽기 권한이 있으면 사용자가 파일 내용을 볼 수 있습니다.

디렉토리의 경우 읽기 권한이 있으면 사용자가 디렉토리에 있는 파일의 이름을 볼 수 있습니다.

쓰다

일반 파일의 경우 쓰기 권한이 있으면 사용자가 파일을 수정하고 삭제할 수 있습니다.

디렉토리의 경우 쓰기 권한을 통해 사용자는 디렉토리를 삭제하고 내용을 수정(파일 생성, 삭제 및 이름 바꾸기)하고 사용자에게 쓰기 권한이 있는 파일의 내용을 수정할 수 있습니다.

실행하다

일반 파일의 경우 실행 권한이 있으면 사용자가 파일을 실행(실행)할 수 있습니다. 사용자는 읽기 권한도 있어야 합니다. 사용자가 실행할 수 있으려면 먼저 실행 프로그램 및 셸 스크립트에 대해 실행 권한을 설정해야 합니다.

디렉토리의 경우 실행 권한을 통해 사용자는 디렉토리에 있는 파일에 대한 메타데이터(ls -l 코드>).

모드(및 권한)의 예

이제 파일의 모드를 읽는 방법과 각 권한의 의미를 이해했으므로 간단한 설명과 함께 개념을 결합하는 공통 모드의 몇 가지 예를 볼 수 있습니다.

  • -rw-------: 소유자만 액세스할 수 있는 파일
  • -rwxr-xr-x: 시스템의 모든 사용자가 실행할 수 있는 파일입니다. "전세계 실행 가능\ 파일
  • -rw-rw-rw-: 시스템의 모든 사용자가 수정할 수 있도록 열려 있는 파일입니다. \누구나 쓸 수 있는 파일
  • drwxr-xr-x: 시스템의 모든 사용자가 읽고 액세스할 수 있는 디렉토리
  • drwxrwx---: 소유자 및 그룹이 수정 가능한(내용 포함) 디렉토리
  • drwxr-x---: 해당 그룹에서 액세스할 수 있는 디렉토리

파일 소유자는 일반적으로 다른 두 클래스와 비교할 때 가장 많은 권한을 가집니다. 일반적으로 그룹기타 클래스에는 소유자 권한의 하위 집합(동등하거나 그 이하)만 있는 것을 볼 수 있습니다. 특정 이유로 파일이 필요한 사용자만 파일에 액세스할 수 있어야 하므로 이는 의미가 있습니다.

주목해야 할 또 다른 사항은 많은 권한 조합이 가능하더라도 대부분의 상황에서 특정 조합만 의미가 있다는 것입니다. 예를 들어 쓰기 또는 실행 액세스에는 거의 항상 읽기 액세스가 수반됩니다. 수정하기 어렵고 실행이 불가능하기 때문입니다. 읽지 마.

결론

이제 Linux에서 소유권과 권한이 작동하는 방식을 잘 이해하셨을 것입니다. chown, chgrpchmod를 사용하여 이러한 권한을 수정하는 방법을 알아보려면 Linux 권한 기본 사항 및 VPS에서 Umask를 사용하는 방법을 참조하십시오.

Linux 기본 사항에 대해 자세히 알아보려면 이 시리즈의 다음 자습서인 Linux I/O 리디렉션 소개를 읽으십시오.