2. 権限レベル

これからのレッスンでは、より理論的な概念を扱います。実践的な演習を好む場合は、遠慮なく先に進み、後でこれらのトピックに戻ってきても構いません。

Linux アーキテクチャの基本的な側面は、ユーザースペースとカーネルの分離です。しかし、なぜその両方の機能を単一のレイヤーに統合できないのでしょうか?その理由は、セキュリティと安定性であり、これらは両者が異なるモードで動作することによって達成されます。

カーネルモードとユーザードモードの違いとは

システムは、カーネルモードとユーザードモードという 2 つの明確なモードで動作します。この分離は、アプリケーションによる直接的で無制限なアクセスからシステムのハードウェアとリソースを保護するために不可欠です。

カーネルモードでは、カーネルはハードウェアに対して完全かつ無制限のアクセス権を持ちます。すべてを制御します。これは最高の特権レベルです。

ユーザードモードでは、アプリケーションは、メモリと CPU リソースの小さく安全な部分にのみアクセスが制限されます。

ユーザーアプリケーションがディスクからの読み取り、ネットワーク経由でのデータ送信、周辺機器へのアクセスなど、ハードウェアに関わる操作を実行する必要がある場合、直接それを行うことはできません。これらの操作は、カーネルモードでカーネルによって処理されなければなりません。この設計により、誤動作したプログラムや悪意のあるプログラムがシステム全体を危険にさらすことを防ぎます。例えば、スパイウェアに直接ハードウェアアクセスを許可すると、すべてのデータを読み取られたり、ウェブカメラを制御されたりする可能性があります。

保護リングと特権アクセス

これらの異なるモードは、特権レベルまたは保護リングとして説明されることがよくあります。同心円状の壁を持つ要塞を想像してください。最も内側のエリアが最も安全で、最高の権限を持っています。コンピューターの保護リングも同様に機能し、最も内側のリングが最高の特権レベルに対応します。

標準的な x86 コンピューターアーキテクチャには、主に 2 つのレベルがあります。

  • リング 0: カーネルが実行される場所です。最高のカーネル特権を持ち、あらゆるシステム命令を実行でき、ハードウェアを管理するための完全な信頼が与えられます。これが特権アクセスの核心です。
  • リング 3: ユーザードモードのアプリケーションが実行されるレベルです。最も特権の低いリングであり、ハードウェアへの直接アクセス権はありません。

このリングベースのセキュリティモデルにより、ユーザーアプリケーションは重要なシステムコンポーネントから隔離されます。しかし、アプリケーションが常にカーネルとは異なるモードにある場合、必要なハードウェア操作をどのように実行するのでしょうか?

システムコールとカーネル特権

ユーザードモードとカーネルモードの橋渡しをするのがシステムコールです。ユーザーアプリケーションが特権タスクを実行する必要がある場合、カーネルに代行してアクションを実行するように要求するためにシステムコールを行います。

このプロセスにより、アプリケーションはユーザードモードからカーネルモードへ一時的かつ安全に移行し、特定の制御された命令を実行できます。タスクが完了すると、システムはユーザードモードに戻ります。このメカニズムにより、アプリケーションは危険な直接的な特権アクセスを得ることなく、必要なサービスを受けることができます。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!ユーザースペース、カーネルスペース、特権レベルの理論的概念を理解することは不可欠ですが、実践的な経験は、これらの概念が Linux 管理の実践でどのように現れるかを定着させるのに役立ちます。システム基盤とのユーザーインタラクションがどのように機能するかを強化するためのハンズオンラボを次に示します。

  1. useradd、usermod、userdel を使用した Linux ユーザーアカウントの管理 - ユーザースペースで動作し、特権アクションのためにカーネルとの対話を必要とするエンティティの管理に直接関連する、ユーザーアカウントの作成、変更、削除を練習します。
  2. Linux におけるファイルとディレクトリの権限の管理 - ファイルとディレクトリへのアクセスを制御する方法を学びます。これは、ユーザーの特権に基づいてカーネルが権限を強制することに依存する、中核的なセキュリティ概念です。
  3. Linux プロセスの管理と監視 - プロセスとの対話と監視の方法を探ります。プロセスは、リソース管理と実行のためにカーネルにシステムコールを行うユーザースペースアプリケーションです。

これらのラボは、カーネルがリソース管理と特権の強制において極めて重要である Linux システムとのユーザーインタラクションの概念を適用し、基本的な Linux 管理タスクに対する自信を構築するのに役立ちます。

クイズ

最も高い特権を持つリング番号は何ですか?