ルートとカーネルの関係は何ですか?[閉まっている]


8

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

ファイルから読み取る(カーネルは、アクセス許可により、そのファイルから読み取ることができることを確認する必要があります。その後、カーネルは、ファイルを読み取るためにディスクに実際の命令を実行します)

ファイルへのアクセス権を変更するには、root権限が必要です。root権限があれば、ユーザーは許可を気にせずに任意のファイルにアクセスできます。では、ルートとカーネルの間に何か関係がありますか?


質問が漠然としていて不明瞭で、回答できない。
psusi 14年

この質問には、実際にはいくつかのことが含まれます。システムコール特権特権レベルについて読む必要があるかもしれません。質問の言い方がわかりません。どういうわけか、スティーブンDは私の意味を理解しています。
Ron Vince

回答:


13

まず、説明:

ファイルへのアクセス権を変更するには、root権限が必要です。

man 2 chmodから、次の場合にchmod()システムコールがEPERM(アクセス権エラー)を返すことがわかります。

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

これは通常、あなたがいることを意味いずれかのファイルまたはrootユーザーの所有者である必要があります。しかし、Linuxの状況はもう少し複雑になる可能性があることがわかります。

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

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

Linuxの場合、行われるさまざまな権限チェックのほとんどは、指定されたUIDに必要な機能があるかどうかをチェックします。機能システムにより、誰が何を実行できるかをより細かく制御できます。

ただし、「root」ユーザーの従来のUNIXの意味を維持するために、UIDが0で実行されるプロセスにはすべての機能があります。

UID = 0として実行されているプロセスはスーパーユーザー権限を持っていますが、システムコールインターフェイスを介してカーネルに要求を行う必要があることに注意してください。

したがって、ユーザースペースプロセスは、rootとして実行されている場合でも、「ユーザーモード」で実行され、カーネルが「カーネルモード」で実行されているため、CPU自体の実際の動作モードが異なるため、実行可能な処理が制限されています。カーネルモードでは、プロセスは任意のメモリにアクセスしたり、任意の命令を発行したりできます。ユーザーモード(x86 CPUでは実際にはさまざまな保護モードがいくつかあります)では、プロセスは自身のメモリにのみアクセスでき、一部の命令しか発行できません。したがって、ルートとして実行されているユーザー空間プロセスは、カーネルが公開しているカーネルモード機能にのみアクセスできます。


rootまたはUID = 0にカーネルレベルの特権があると言うべきでしょうか。または、カーネルによってルートに適用される制限はありますか?
Ron Vince

UID = 0として実行されているプロセスには、スーパーユーザー特権があります。ただし、システムコールインターフェイスを介してカーネルに要求を出します。rootとして実行されている場合でも、ユーザースペースプロセスは、「ユーザーモード」で実行され、カーネルが「カーネルモード」で実行されているため、CPU自体の実際の動作モードが異なるため、実行可能な処理が制限されています。rootとして実行されているユーザースペースプロセスは、カーネルが公開しているカーネルモード機能にのみアクセスできます。詳しくはlinfo.org/kernel_mode.htmlをご覧ください。
Steven D

いくつかのリンクを付けて回答に表彰を追加しました。
Steven D

Unixに関する本の推奨事項はありますか?
Ron Vince

ああ、そう言ってくれてありがとう。与えられた回答に基づいて、まだ文献レビューを行っています。彼らはアイデアと文献の資料を指摘していますが、私はそれらの答えの正誤を判断する確信がまだありません。
Ron Vince
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.