Linuxファイルシステムでは、ファイル権限は何ビットを占めますか?
答え1
他の答えに追加:
伝統的なUnix権限は次のように分けられます。
- 読む(
r
) - 書く(
w
) - ファイル/アクセスディレクトリの実行(
x
)
これらの各々はビットとして記憶される。ここで、1 は許可されていることを意味し、0 は許可されないことを意味します。
たとえば、読み取り専用アクセス(通常は書き込み)はバイナリまたは8進数r--
で保存されます。100
4
許可されるアクセスを決定するこれらの権限には3つのグループがあります。
- ファイル所有者
- ファイルグループ
- 他のすべてのユーザー
これらはすべて同じ変数に一緒に保存されます。たとえば、rw-r-----
所有者への読み取りと書き込み、グループへの読み取り専用、他人へのアクセスなし、バイナリ110100000
、8進数で保存されます640
。
これは9ビットになります。
それには3つの特別なビットがあります:
- 設定値
- 設定
- 難しい
man 1 chmod
これについて詳しくは、次をご覧ください。
最後に、4ビットはファイルタイプ(通常のファイル、ディレクトリ、パイプ、デバイスなど)を格納するために使用されます。
これはinodeに一緒に保存され、合計16ビットを構成します。
答え2
どんな権限がありますか?デフォルトの権限は16ビットです。 ext2は32ビットを使用し、他の32ビットはファイルフラグ()に使用され、chattr(1)
POSIX ACLも可変スペースを使用します。/usr/include/linux/ext2_fs.h
詳細より。 (ext3とext4はext2に基づいて構築されており、ほとんど同じ構造を使用しています。)
答え3
ファイルに関する情報は、inodeというデータ構造に格納されます。この構造には、権限を含むモードフィールドがあります。私のシステムのこのフィールドは、符号なしの短い2バイト16ビットです。
直接確認するには、Linuxのソースコードでfs.hを確認してください。