Unixのファイル特権システムとWindowsの特権システムの違いは何ですか?


9

関連質問:Linuxファイルシステム/組織はWindowsとどう違うのですか?

私はファイルとディレクトリに関して特権がどのように機能するかについてある程度知っています-各エントリには、ファイルの所有者と所有者が属するグループを表すownerand groupプロパティがあります(私が間違っている場合は訂正してください)。

これは、WindowsのNTFSファイルシステムでの権限の編成とどう違うのですか?Unixの許可システムにはNTFSと比べてどのような利点がありますか?

回答:


16

NTFSにはWindows ACEがあります。Unixは、各ファイルで「モードビット」を使用します。

NTFSでは、各ファイルに所有者、および0個以上のWindowsアクセス制御エントリ(ACE)を含めることができます。ACEは、プリンシパル(ユーザーとグループはプリンシパル)、一連の操作(読み取り、書き込み、実行など)、およびそれらの操作が許可されているか拒否されているかで構成されます。ファイルには多くのACEを含めることができます。ファイル以外のWindowsの他のオブジェクトも、レジストリエントリ、プリンターオブジェクトなどのACEを持つことができます。ファイル操作が発生すると、すべてのACEが考慮されます。拒否は許可より優先されます。

Windows ACEは継承をサポートしており、ディレクトリにACEを設定して、下位レベルのディレクトリに自動的に伝播させることができます。

Unixのファイルには、所有ユーザー(所有者)と所有グループ(所有者グループ)があります。所有者、所有グループのメンバー、およびその他の全員(別名世界)の3つの固定「プリンシパル」があります。各プリンシパルには、読み取り、書き込み、および実行能力をカバーする3つの「ビット」があります。(これらはファイルとはディレクトリの意味が異なります。これを参照してください)。これらのビットは、誰がどの操作を実行できるかを決定します。これはファイルのモードと呼ばれ、ファイルに組み込まれています(個別のACEはありません)。

ほとんどの場合、「world」権限に関係があります。つまり、3つのビットすべてを「world」に0に設定すると、所有者またはグループ所有者以外の誰もファイルを操作できなくなります。Unixのアクセス許可はファイルシステムでのみ機能しますが、ほとんどのオブジェクトはファイルとして表示されるため、アクセス許可を使用してディスク、プリンターなどへのアクセスを制限できます。Unixのアクセス許可はより単純ですが、より「粗い」ものです。Unixのアクセス許可は継承をサポートしておらず、下位レベルのディレクトリには影響を与えません。ただし、ディレクトリの実行アクセス許可は例外ですが(これは、新しく作成されたファイルにディレクトリのアクセス許可を引き継がせます(ただし、現在作成されているファイルには影響しません))。

従来、Unixファイルには、単一の所有者と単一の所有者グループがあります。Linuxには、Windowsと同様の方法でファイルにACEを追加する拡張機能があります。

Unixの利点は、ファイルシステムがファイルを開くときにiノードに加えてACEをフェッチする必要がないため、単純なシステムは通常、理解と安全性が高く、速度が速いことだけです。


4
これはディレクトリのsetgid権限であり、ファイルに権限ではなく所有者グループを継承させます。
Random832

3
@George:覚えておくべきことの1つは、グループは所有者のグループではなく、別のグループであることです。chgrp(1)を参照してください。
Hello71、

@ Random832:説明をありがとう。
LawrenceC、

3
最近のほとんどのディストリビューションには、デフォルトでさまざまな使用可能なファイルシステムにコンパイルされた拡張アクセス制御リスト(ACL)のサポートが含まれています。アクセスに必要なソフトウェアパッケージの名前とこれらの変更は、一般的に呼ばれているaclか、faclという2つのプログラムで、または類似のものsetfaclgetfaclアクセス制御リストの設定を変更または取得するために。
Shadur

7

まったく異なる点の1つは、「実行可能」はLinux / Unixでの許可であり、ファイルの名前や拡張子に基づくものではないことです。

これはWindowsよりも有利です。Linuxでは、実行権限を削除することで、何かが実行されないようにすることができます。魔法の拡張機能はまったく重要ではありません。これがおそらく、従来のファイルウイルスがUnixとLinuxでまったく機能しなかった理由の1つです。


2
Windowsは実際には実行権限を持っていますが、デフォルトで設定することで目的を無効にします。
パッチは

1
拡張機能はWindowsでも関係ありません。
ローガンカパルド

1
@Logan:実際、それらはWindowsでは重要です。ファイル拡張子は、それを開くために使用できるプログラムを決定するだけでなく、サムネイルを生成できるように、ファイルの種類をエクスプローラーに指示します。後者の場合、サムネイルジェネレーターに存在するバグを悪用し、システムを危険にさらす可能性があります。
Nathan Osman

1
@George同じことが、任意のオペレーティングシステムのバギーサムネイルプレビューアを備えたグラフィカルファイルマネージャーにも当てはまります。私の要点は、プログラムが.exeで終わっていてもCreateProcessは2つのフックを与えない(そして、これはcmd.exeからプログラムを実行することで簡単に確認できる)ことですが、実際には実行ビットに注意を払っています。
Logan Capaldo 2011年

2
@George、ちょうどUnixのように(シバンの検索が「高度」であるかどうかについて議論を始めたくない場合を除く)。ファイル拡張子がセキュリティモデルとは関係がないことを明確にしたかっただけです。Windowsで実行可能ファイルを非実行ファイルとしてマークすると、UNIXと同じ効果があります。
Logan Capaldo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.