関連質問:Linuxファイルシステム/組織はWindowsとどう違うのですか?
私はファイルとディレクトリに関して特権がどのように機能するかについてある程度知っています-各エントリには、ファイルの所有者と所有者が属するグループを表すowner
and group
プロパティがあります(私が間違っている場合は訂正してください)。
これは、WindowsのNTFSファイルシステムでの権限の編成とどう違うのですか?Unixの許可システムにはNTFSと比べてどのような利点がありますか?
関連質問:Linuxファイルシステム/組織はWindowsとどう違うのですか?
私はファイルとディレクトリに関して特権がどのように機能するかについてある程度知っています-各エントリには、ファイルの所有者と所有者が属するグループを表すowner
and group
プロパティがあります(私が間違っている場合は訂正してください)。
これは、WindowsのNTFSファイルシステムでの権限の編成とどう違うのですか?Unixの許可システムにはNTFSと比べてどのような利点がありますか?
回答:
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をフェッチする必要がないため、単純なシステムは通常、理解と安全性が高く、速度が速いことだけです。
acl
か、facl
という2つのプログラムで、または類似のものsetfacl
とgetfacl
アクセス制御リストの設定を変更または取得するために。
まったく異なる点の1つは、「実行可能」はLinux / Unixでの許可であり、ファイルの名前や拡張子に基づくものではないことです。
これはWindowsよりも有利です。Linuxでは、実行権限を削除することで、何かが実行されないようにすることができます。魔法の拡張機能はまったく重要ではありません。これがおそらく、従来のファイルウイルスがUnixとLinuxでまったく機能しなかった理由の1つです。