ルートとカーネルの関係は何ですか? [閉鎖]

ルートとカーネルの関係は何ですか? [閉鎖]

最初の回答の一部に基づいてこの問題:

ファイルから読み取る(カーネルはファイルから読み取る権限があることを確認し、ファイルを読み取るためにディスクに実際のコマンドを実行します。)

ファイル権限を変更するには、root権限が必要です。 root権限がある場合、ユーザーは権限を気にせずにすべてのファイルにアクセスできます。それでは、ルートとカーネルの間にはどのような関係がありますか?

答え1

まず、いくつかの説明をしましょう。

ファイル権限を変更するには、root権限が必要です。

~から人 2 chmod次の条件が満たされると、chmod() システムコールが EPERM (特権エラー) を返すことがわかります。

有効なUIDがファイル所有者と一致せず、プロセスに権限がありません(Linux:CAP_FOWNER機能がありません)。

これは一般的にあなたを意味します。誰でもファイル所有者またはrootユーザーである必要があります。しかし、私たちはLinuxの状況がより複雑になることがわかります。

では、ルートとカーネルの間にはどのような関係がありますか?

引用したテキストが示すように、カーネルはシステムコールを実行するプロセス(つまり、それを実行しているユーザー)のUIDが要求された操作を実行できるかどうかを確認する役割を果たします。したがって、ルートの超能力は、ルートユーザー(UID = 0)が要求した操作を常に許可するようにカーネルがプログラムされているという事実に由来します。

Linux の場合、発生するさまざまな権限チェックのほとんどは、特定の UID に必要な権限があることを確認します。能力。能力システムを使用すると、誰ができることをより細かく制御できます。

ただし、「root」ユーザーの従来のUNIXセマンティクスを維持するためにUID 0で実行されるプロセスには、すべての機能が含まれています。

UID = 0で実行されるプロセスにはスーパーユーザー権限がありますが、システムコールインターフェイスを介してカーネルに依頼する必要があります。

したがって、ユーザー空間プロセスはrootとして実行されても、ユーザーモード「そしてカーネルが実行中です」カーネルモードこれは実際にはCPU自体の他の動作モードです。カーネルモードでは、プロセスはすべてのメモリにアクセスしたり、すべてのコマンドを発行したりできます。 . 独自のメモリがあり、いくつかのコマンドしか実行できないため、root で実行されるユーザ空間プロセスは、カーネルが提供するカーネルモード機能にのみアクセスできます。

関連情報