![ユーザー モードのプロセスがカーネル モードに切り替わります。すると、プロセスはルート権限を持つようになりますか?](https://rvso.com/image/52106/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%20%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%8C%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%20%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E5%88%87%E3%82%8A%E6%9B%BF%E3%82%8F%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AF%E3%83%AB%E3%83%BC%E3%83%88%E6%A8%A9%E9%99%90%E3%82%92%E6%8C%81%E3%81%A4%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
によるとhttp://www.linfo.org/kernel_mode.html第7段落:
ユーザー プロセスがシステム コールを介してカーネル コードの一部を実行すると、プロセスは一時的にカーネル プロセスになり、カーネル モードになります。カーネル モードでは、プロセスはルート (管理者) 権限を持ち、主要なシステム リソースにアクセスできます。プロセスではなくプロセスのコントローラーであるカーネル全体は、カーネル モードでのみ実行されます。カーネルは、プロセスからの要求を満たすと、プロセスをユーザー モードに戻します。
その線については私には全く不明瞭です。
カーネル モードでは、プロセスはルート (管理者) 権限を持ち、主要なシステム リソースにアクセスできます。
なぜ、root として実行されていないユーザー空間プロセスに root 権限が付与されるのでしょうか? root として実行されているユーザー空間プロセスとどう違うのでしょうか?
答え1
ルート権限と非ルート権限はすべてユーザー空間に関連するものです。たとえば、ルートユーザーはアプリケーションをインストールできますが、通常のユーザーはインストールできません。
ただし、ルート ユーザーにもいくつかの制限があります。これらの制限は、ユーザー空間とカーネル空間を区別するオペレーティング システムの設計によって課せられます。たとえば、ルート ユーザーであっても、ドライバーを通じてオプションが提供されていない場合は、ハード ディスクの回転速度を変更することはできません (この機能を許可するドライバーを作成することはできますが、その場合でもハードウェアに直接アクセスするのではなく、ドライバーを介してアクセスします)。
その理由は、ハードウェアの実際の制御はすべてカーネル空間で行われ、ユーザー空間がそれにアクセスする方法はシステムコールを介して行われるからです。カーネル空間はユーザーのための場所ではありません :)
質問にお答えすると、ルート権限を取得するのはプロセスではなく、カーネル モードへの切り替えによってすべてのシステム リソースに無制限にアクセスできるようになることです。ただし、その無制限のアクセスはカーネル モードで実行されているコードにのみ利用可能であるため、プロセスにはその権限がありません。カーネル コードの呼び出しのみが使用されます。
カーネル モードで実行されるコードは、システムに完全に制限なくアクセスできます。
答え2
(簡潔に説明します。)
理論的には、特権には 2 つの側面があります。
コンピューター命令セットアーキテクチャ(ISA) は、マシンの特定の情報や機能を保護します。
のオペレーティング·システム(OS) アプリケーションと通信のエコシステムを作成します。その中核となるのはカーネルであり、これはいかなる依存関係もなく ISA 上で実行できるプログラムです。
今日のオペレーティング システムは、私たちが今日のようにコンピューターを使用できるように、非常に多様なタスクを多数実行します。非常に (非常に非常に) 単純化した見方をすると、カーネルはコンピューターによって実行される唯一のプログラムであると考えることができます。アプリケーション、プロセス、およびユーザーはすべて、OS、特にカーネルによって作成されたエコシステムの成果物です。
オペレーティング システムに関するユーザー (スペース) 権限について話す場合、オペレーティング システムによって管理、付与、および強制される権限について話すことになります。たとえば、特定のディレクトリからデータを取得することを制限するファイル権限は、カーネルによって強制されます。カーネルは、ファイルに関連付けられたいくつかの ID を確認し、権限を表すいくつかのビットを解釈して、データを取得するか、取得を拒否するかを決定します。
ISA 内の特権階層は、カーネルがその目的で使用するツールを提供します。具体的な詳細は大きく異なりますが、一般的には、CPU によって実行されるプログラムが I/O を自由に実行し、ISA によって提供される命令を使用できるカーネル モードと、I/O と命令が制限されるユーザー モードがあります。
たとえば、特定のメモリ アドレスにデータを書き込む命令を読み取る場合、カーネル モードの CPU は単に特定のメモリ アドレスにデータを書き込むことができますが、ユーザー モードでは、メモリ アドレスがデータを書き込むことができる許可されたアドレスの範囲内にあるかどうかを最初に確認するチェックをいくつか実行します。アドレスに書き込むことができないと判断された場合、通常、ISA はカーネル モードに切り替わり、カーネルの一部である別の命令ストリームの実行を開始し、適切な処理を行います (TM)。
これは、あるプログラムが別のプログラムに干渉しないようにするための強制戦略の一例です。これにより、現在アクセスしている Web ページの JavaScript によって、オンライン バンキング アプリケーションが疑わしいトランザクションを実行することがなくなります。
カーネル モードでは、正しい動作を強制するために他に何もトリガーされず、カーネル モードで実行されているプログラムが正しい動作をしているものと想定されます。そのため、カーネル モードでは、プログラムに OS エコシステムの抽象的なルールや概念を強制することはできません。そのため、カーネル モードで実行されているプログラムは、ルート ユーザーと同等の権限を持っています。
技術的には、カーネル モードは、OS のルート ユーザーになるよりもはるかに強力です。