カーネルとファイルシステムの両方が役割を果たします。アクセス許可はファイルシステムに格納されるため、情報をファイルシステム形式で格納する場所が必要です。権限はカーネルによって適用され、アプリケーションに伝達されるため、カーネルはファイルシステムに格納されている情報が何を意味するかを決定するルールを実装する必要があります。
「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は適用されません。
逆に、アクセス制御をサポートしていないオペレーティングシステムとファイルシステムがあります。たとえば、FATとバリアントはシングルユーザーオペレーティングシステムとリムーバブルメディア用に設計されており、その権限は読み取り/読み取り/書き込みと非表示/表示に制限されています。これらは、DOSによって適用される権限です。ext2ファイルシステムをDOSにマウントした場合、ext2権限は適用されません。逆に、LinuxでFATファイルシステムにアクセスすると、すべてのファイルに同じ権限が付与されます。
Windowsの後続バージョンでは、より多くの権限タイプのサポートが追加されています。NTFSファイルシステムは、これらの追加の権限を格納するように拡張されました。古いオペレーティングシステムで新しいアクセス許可を使用してファイルシステムにアクセスする場合、OSはこれらの新しいアクセス許可を認識しないため、適用されません。逆に、新しいオペレーティングシステムで古いファイルシステムにアクセスする場合、新しいアクセス許可は含まれず、適切なフォールバックを提供するかどうかはOSに依存します。