2. 권한 수준

다음 몇 가지 강의는 좀 더 이론적인 개념을 다룹니다. 실습 위주를 선호하신다면 건너뛰고 나중에 이 주제들로 돌아오셔도 좋습니다.

리눅스 아키텍처의 근본적인 측면은 사용자 공간 (user space) 과 커널 (kernel) 의 분리입니다. 그렇다면 왜 이 둘의 권한을 단일 계층으로 합치지 않을까요? 그 이유는 보안과 안정성 때문이며, 이는 두 영역이 서로 다른 모드에서 작동하도록 함으로써 달성됩니다.

커널 모드와 사용자 모드의 차이점

시스템은 커널 모드와 사용자 모드라는 두 가지 뚜렷한 모드로 작동합니다. 이러한 분리는 애플리케이션의 직접적이고 통제되지 않은 하드웨어 및 리소스 접근으로부터 시스템을 보호하는 데 매우 중요합니다.

커널 모드에서는 커널이 하드웨어에 대한 완전하고 무제한적인 접근 권한을 가집니다. 커널이 모든 것을 제어합니다. 이는 가장 높은 수준의 권한입니다.

사용자 모드에서는 애플리케이션이 메모리와 CPU 리소스 중 작고 안전한 부분에 대해서만 매우 제한적인 접근 권한을 가집니다.

사용자 애플리케이션이 디스크 읽기, 네트워크 데이터 전송, 주변 장치 접근과 같이 하드웨어와 관련된 작업을 수행해야 할 때, 애플리케이션은 이를 직접 수행할 수 없습니다. 이러한 작업은 커널 모드에서 커널에 의해 처리되어야 합니다. 이러한 설계는 오작동하거나 악의적인 프로그램이 시스템 전체를 손상시키는 것을 방지합니다. 예를 들어, 스파이웨어가 모든 데이터를 읽거나 웹캠을 제어할 수 있도록 직접적인 하드웨어 접근 권한을 부여하고 싶지는 않을 것입니다.

보호 링과 특권 접근

이러한 다른 모드들은 종종 권한 수준 (privilege levels) 또는 **보호 링 (protection rings)**으로 설명됩니다. 가장 안쪽 영역이 가장 안전하고 최고의 권한을 가진 동심원 벽으로 이루어진 요새를 상상해 보십시오. 컴퓨터의 보호 링도 이와 유사하게 작동하며, 가장 안쪽 링이 가장 높은 권한 수준에 해당합니다.

x86 컴퓨터 아키텍처 표준에는 두 가지 주요 수준이 있습니다.

  • 링 0 (Ring 0): 커널이 실행되는 곳입니다. 가장 높은 수준의 커널 권한을 가지며, 모든 시스템 명령어를 실행할 수 있고 하드웨어 관리를 위해 완전한 신뢰를 받습니다. 이것이 **특권 접근 (privileged access)**의 핵심입니다.
  • 링 3 (Ring 3): 사용자 모드 애플리케이션이 실행되는 수준입니다. 가장 권한이 적은 링이며 하드웨어에 대한 직접적인 접근 권한이 없습니다.

이 링 기반 보안 모델은 사용자 애플리케이션이 중요한 시스템 구성 요소로부터 격리되도록 보장합니다. 하지만 애플리케이션이 항상 커널과 다른 모드에 있다면, 어떻게 필요한 하드웨어 작업을 수행할 수 있을까요?

시스템 호출과 커널 권한

사용자 모드와 커널 모드 사이의 다리 역할을 하는 것이 **시스템 호출 (system call)**입니다. 사용자 애플리케이션이 특권 작업을 수행해야 할 때, 커널에게 대신 작업을 수행하도록 요청하기 위해 시스템 호출을 합니다.

이 프로세스를 통해 애플리케이션은 특정 제어된 명령어를 실행하기 위해 사용자 모드에서 커널 모드로 일시적이고 안전하게 전환할 수 있습니다. 작업이 완료되면 시스템은 사용자 모드로 다시 전환됩니다. 이 메커니즘은 애플리케이션이 하드웨어에 대한 위험한 직접적인 특권 접근을 얻지 않으면서 필요한 서비스를 얻을 수 있도록 보장합니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

연습이 완벽을 만듭니다! 사용자 공간, 커널 공간 및 권한 수준의 이론적 개념을 이해하는 것이 중요하지만, 실습 경험은 이러한 개념이 실제 리눅스 관리에서 어떻게 나타나는지 이해하는 데 도움이 됩니다. 다음은 사용자 수준 작업이 기본 시스템과 상호 작용하는 방식을 이해하는 데 도움이 되는 몇 가지 실습 랩입니다.

  1. useradd, usermod 및 userdel 을 사용하여 리눅스 사용자 계정 관리 - 사용자 계정 생성, 수정 및 삭제를 연습합니다. 이는 사용자 공간에서 작동하며 특권 작업을 위해 커널 상호 작용이 필요한 엔터티를 관리하는 것과 직접적으로 관련이 있습니다.
  2. 리눅스에서 파일 및 디렉터리 권한 관리 - 파일 및 디렉터리에 대한 접근을 제어하는 방법을 배웁니다. 이는 사용자의 권한을 기반으로 커널이 권한을 적용하는 핵심 보안 개념입니다.
  3. 리눅스 프로세스 관리 및 모니터링 - 프로세스와 상호 작용하고 모니터링하는 방법을 탐색합니다. 프로세스는 리소스 관리 및 실행을 위해 커널에 시스템 호출을 하는 사용자 공간 애플리케이션입니다.

이러한 랩은 리눅스 시스템과의 사용자 상호 작용에 개념을 적용하는 데 도움이 될 것이며, 여기서 리소스 관리 및 권한 적용에 대한 커널의 역할이 가장 중요하며 기본적인 리눅스 관리 작업에 대한 자신감을 구축할 수 있습니다.

퀴즈

가장 높은 권한을 가진 링 번호는 무엇입니까?