ファイル権限/属性はどのように機能しますか?カーネルレベル、FSレベル、またはその両方?

ファイル権限/属性はどのように機能しますか?カーネルレベル、FSレベル、またはその両方?

以前私に発生した質問:ファイル権限/属性OS(したがってカーネル)が関連していますか、それともファイルシステムに関連していますか? 2番目のオプションは私にとってより論理的なようですが、reiserfs「Unixファイル権限」などのファイル権限については聞いたことがありません。一方、引用するとウィキペディア記事:

新しいバージョンのWindowsがリリースされ、MicrosoftはNTFSファイルシステムで利用可能な属性

これは、Windowsファイルのプロパティが何らかの形でファイルシステムに関連付けられていることを示しているようです。

誰かが私を実現できますか?

答え1

カーネルとファイルシステムの両方が機能します。権限はファイルシステムに保存されるため、その情報をファイルシステム形式で保存できる場所が必要です。権限はカーネルによって強制され、アプリケーションに渡されるため、カーネルはファイルシステムに格納されている情報の意味を決定する規則を実装する必要があります。

「Unixファイルの権限」を参照してください。伝統的な許可システムこれには、3つの役割タイプ(ユーザー、グループ、その他)によって制御される3つのタスク(読み取り、書き込み、実行)が含まれます。ファイルシステムの役割は、3×3=9ビットの情報を保存することです。特に、プロセスがファイルを操作しようとすると、カーネルはプロセスが実行されているユーザーとグループに基づいて操作を許可するかどうかを決定する必要があります。そして要求された仕事。 (「Unixファイル権限」には、次のものが含まれます。setuid および setgid ビット、厳密に言えば、これは許可ではありません。 )

最新のUNIXシステムは、異なる形式の権限をサポートできます。ほとんどの最新のUNIXシステム(Solaris、Linux、* BSD)でサポートされています。アクセス制御リストファイルごとに複数のユーザーと複数のグループに読み取り/書き込み/実行権限を割り当てることができます。ファイルシステムにはこの追加情報を格納するためのスペースがあり、カーネルにはこの情報を見つけて使用するコードが含まれている必要があります。 Ext2、reiserfs、btrfs、zfs、および他のほとんどの最新のUNIXファイルシステム形式は、これらのACLが保存される場所を定義します。 Mac OS Xのサポート異なるACLセットこれには、「追加」や「サブディレクトリの作成」などの非伝統的な権限が含まれます。 HFS +ファイルシステム形式はそれをサポートします。 Linux で HFS+ ボリュームをマウントする場合、Linux カーネルがこれらの ACL をサポートしていないため、これらの ACL は適用されません。

一方、一部のオペレーティングシステムとファイルシステムはアクセス制御をサポートしていません。例えば、脂肪そのバリエーションは、読み取り/書き込みと非表示/表示に特権が制限されたシングルユーザーオペレーティングシステムとリムーバブルメディア用に設計されています。これは、以下によって施行される権限です。オペレーティングシステム。 DOS から ext2 ファイルシステムをマウントする場合、ext2 権限は適用されません。逆に、LinuxでFATファイルシステムにアクセスすると、すべてのファイルに同じ権限が付与されます。

Windowsの将来のバージョンでは、より多くの権限タイプのサポートが追加されました。 NTFSファイルシステムは、これらの追加の権限を保存するように拡張されました。以前のオペレーティングシステムで新しい権限を使用してファイルシステムにアクセスすると、オペレーティングシステムはこれらの新しい権限を認識しないため、適用しません。対照的に、最新のオペレーティングシステムを使用して古いファイルシステムにアクセスする場合、新しい権限は含まれず、オペレーティングシステムは合理的なフォールバックを提供します。

答え2

特定の権利を使用するために両方コアそしてファイルシステムはそれをサポートする必要があります。ファイルシステムが最も基本的なアクセス権をサポートしていない場合、ファイルシステムコードはそれを偽にする必要があります(たとえば、umaskvfatのマウントオプションを使用する)。

答え3

私の理解は、カーネルがVFSでinodeを実装していることです。 inodeには、資格情報(UNIXおよびACL)やその他のメタデータが含まれており、ファイルシステムはinodeを拡張して機能を追加できます。興味がある場合は、Linux VFSをお読みください。システムプログラマーでなければ本当に恐ろしい内容です。

答え4

通常、ファイル権限とファイル属性は次のとおりです。保存済みファイルシステムを入力してください。 [正確な方法は、対応するファイルシステム(ext3 / 4、ライザー、NTFSなど...)によって異なります。]使用される一般的にカーネルによって実装する何。

たとえば、* nixのカーネル(例:sistema)は、ファイル/ディレクトリに関連するUIDの意味を知っているものです。ファイル UID は、ファイルシステムが特定のファイルとともに保存する数値ですが、特定のユーザーに対するこれらの数値の「変換」(および特定の操作を実行または実行しない対応する権限) は、カーネルによって実行されます.

関連情報