それでも、「root」ユーザーをスーパーユーザーとして扱うUnixまたはUnixファミリーのオペレーティングシステムはありますか?

それでも、「root」ユーザーをスーパーユーザーとして扱うUnixまたはUnixファミリーのオペレーティングシステムはありますか?

Linuxはもはや「root」ユーザーをスーパーユーザーとして扱わず、代わりに能力これはプロセスに権限を与えます(BSDも同様の役割を果たすと思います)。

たとえば、以前のバージョンのLinuxでは、Linuxはプロセスが「root」の場合はプロセスがソケットを生成することを許可していましたが、EUID最新のFSUIDLinuxバージョンではプロセスに権限がある場合にのみソケットを生成できます。 。

しかし、まだ「root」ユーザーをスーパーユーザーとして扱うUnixまたはUnixファミリーのオペレーティングシステムがあるかどうか疑問に思います。

答え1

質問の前提にはほとんど欠陥があります。 Linuxするユーザー0をスーパーユーザーと見なします。 (常にユーザー0。このユーザーを呼び出すのはroot慣例です。)機能は、ルート以外のプロセスが特定の権限を受け取ることを可能にする追加のメカニズムです。ユーザー0は通常ほとんどすべての機能を持っているため、ルートはスーパーユーザーのままです。

有効なユーザーID 0で実行されるプロセスは機能を失う可能性がありますが、これは高度に制御された環境を除いて機能を制限しません。実行可能ファイルを作成して呼び出すことができる有効ユーザーID 0で実行されているすべてのプロセスは、有効ユーザーIDがルートのときにプロセスの機能マスクを保持しないため、すべての機能を使用してexecve任意のコードを実行できます。execve(「ルートプログラムの機能と実行」を参照)手動.)

SECBIT_NOROOTログイン中にフラグを設定して復元できないようにするか、境界セットから機能を削除することで、オペレーティングシステムにユーザーID 0を使用している間に特定の機能へのアクセスを完全に削除することができます。しかし、これはLinux(Linuxオペレーティングシステムなど)が一般的に機能する方法ではありません。これは、制限されたオペレーティングシステム(コンテナ内など)に役立つカーネルの追加機能です。

機能はルートの権限を制限することができますが、この方法で使用するのは簡単ではなく、主な用途ではありません。機能は、主にプロセスがルートとして実行されるのを防ぐために使用されます。 Linuxカーネルにはroot権限を制限する他の機能があります。 SELinuxやAppArmorなどのセキュリティモジュールはユーザーIDに関係なく動作するため、ユーザーID 0がほとんど何もしないシステムを設定することが可能です。(しかし、これは一般的なシステムが設定される方法ではありません。)ユーザーネームスペース、ユーザーID 0はこの名前空間内のスーパーユーザーにすぎず、この機能は広く使用されています。コンテナ

FreeBSDは以下を提供します。コショウ能力。 CapsicumがユーザーID 0の権限を制限しているかどうかわかりません。繰り返しますが、この機能の主な目的は、すべての権限プロセスの概念を排除するのではなく、すべての権限で実行されるコードの量を減らすことです。

他のBSDには機能メカニズムがないと思います。 OpenBSDの目的は、特権コードの複雑さと量を最小限に抑えてセキュリティを確保することです。特権の数を減らすためにセキュリティメカニズムの複雑さを増やすことによって、特権コードは無料のランチではありません。

関連情報