私たち全員が知っているように、ほとんどのLinuxシステムには一種のファイル権限があります。しかし、それらを定義する責任は何ですか?オペレーティングシステム、ファイルシステムまたは他のもの?
まず、ファイルシステム(ext3、NTFSなど)のようです。これが提案されていますウィキペディア記事これは、「ファイルシステム権限」などのフレーズが使用されるためです。しかし驚くべきことに、その記事では次のような言及もしました。
LinuxベースのシステムとすべてのバージョンのmacOSを含むUnixファミリーやその他のPOSIX互換システムには、個々のファイルに対する権限を管理するための単純なシステムがあります。この資料では「レガシー Unix 権限」と呼ばれます。
これは、権限がオペレーティングシステム(少なくともPOSIX準拠のシステム、それが何を意味するか)によって管理されることを示します。これもおすすめファイル権限に関する情報記事。
しかもこれはACLのRed Hatドキュメント私たちに教えてください:
Red Hat Enterprise Linuxカーネルは、ext3ファイルシステムとNFSにエクスポートされたファイルシステムのACLサポートを提供します。 Sambaを介してアクセスされるExt3ファイルシステムもACLを認識します。
これは、ファイル権限タイプのACLが何らかの方法でLinuxカーネルで定義されていることを示します。
私はこれについて混乱しています。
答え1
簡単に:
伝統的な権限から始めましょう。同様の後続のファイルシステムとext2
元のUnixファイルシステムにはinodeという構造があります。これは多くのバイトで構成され、場所、サイズなどのファイルの属性を記述します。権限を表すバイトには、所有者、グループ、および他のユーザーの権限に対応するビットセットがあります。世界。ls -l
最も低いビットがrwxr-xr-x
見ているものと直接一致するところでこれを見ることができます(したがってこれがビットパターンになります111101101
)。chmod
この2進数を8進数として使用するのと同じコマンドでもこれを見ることができます(したがって、3ビットの各グループは単一の数字に対応します)。
許可バイトはカーネルのファイルシステムドライバによって解釈されます(デフォルトでは、カーネルはinodeデータ構造と一致するいくつかのCデータ構造を使用します)。
したがって、この意味では、「権限はカーネルによって管理される」と「権限はファイルシステムに保存される」と言える。
ACL は、柔軟性が高く、より難しい表現とより難しいカーネル API を使用する点を除いて同様に機能します。