Linuxファイルシステムの何ビットがファイルのパーミッションに使用されますか?
他の回答に追加するには:
従来のUnixパーミッションは次のように分類されます。
r
)w
)x
)これらはそれぞれビットとして格納されます。1は許可されていることを意味し、0は許可されていないことを意味します。
たとえば、通常はr--
と記述される読み取り専用アクセスは、バイナリ100
または8進数4
として格納されます。
これらの権限には3つのセットがあり、次のアクセスを許可します。
それらはすべて同じ変数に一緒に格納されます。 rw-r-----
は、所有者には読み取り/書き込み、グループには読み取り専用、他のユーザーにはアクセスできないことを意味し、110100000
バイナリ、640
8進数として格納されます。
つまり、9ビットになります。
次に、他に3つの特別なビットがあります。
詳細については、man 1 chmod
を参照してください。
そして最後に、ファイルのタイプは4ビットを使用して保存されます。それが通常のファイル、ディレクトリ、パイプ、デバイスなど、何であれ。
これらはすべてiノードに一緒に格納され、一緒に16ビットになります。
どの権限?基本的な権限は16ビットに収まります。 ext2は32ビットを使用し、さらにファイルフラグにさらに32ビットを使用します(chattr(1)
);その場合、POSIXACLはさらに可変スペースを使用します。見る /usr/include/linux/ext2_fs.h
詳細については。 (ext3とext4はext2上に構築され、ほとんど同じ構造を使用します。)
ファイルに関する情報は、iノードと呼ばれるデータ構造に格納されます。この構造には、アクセス許可を含むモードのフィールドがあります。私のシステムのこのフィールドは、2バイトと16ビットのunsignedshortです。
Linuxソースのfs.hを見て、自分の目で確かめてください。