web-dev-qa-db-ja.com

ファイルのアクセスフラグは何ビットですか?

Linuxファイルシステムの何ビットがファイルのパーミッションに使用されますか?

7
Philoxopher

他の回答に追加するには:

従来のUnixパーミッションは次のように分類されます。

  • 読み取り(r
  • 書き込み(w
  • ファイル/アクセスディレクトリを実行します(x

これらはそれぞれビットとして格納されます。1は許可されていることを意味し、0は許可されていないことを意味します。

たとえば、通常はr--と記述される読み取り専用アクセスは、バイナリ100または8進数4として格納されます。

これらの権限には3つのセットがあり、次のアクセスを許可します。

  • ファイルの所有者
  • ファイルのグループ
  • 他のすべてのユーザー

それらはすべて同じ変数に一緒に格納されます。 rw-r-----は、所有者には読み取り/書き込み、グループには読み取り専用、他のユーザーにはアクセスできないことを意味し、110100000バイナリ、6408進数として格納されます。

つまり、9ビットになります。

次に、他に3つの特別なビットがあります。

  • setuid
  • setgid
  • ねばねば

詳細については、man 1 chmodを参照してください。

そして最後に、ファイルのタイプは4ビットを使用して保存されます。それが通常のファイル、ディレクトリ、パイプ、デバイスなど、何であれ。

これらはすべてiノードに一緒に格納され、一緒に16ビットになります。

9
Mikel

どの権限?基本的な権限は16ビットに収まります。 ext2は32ビットを使用し、さらにファイルフラグにさらに32ビットを使用します(chattr(1));その場合、POSIXACLはさらに可変スペースを使用します。見る /usr/include/linux/ext2_fs.h 詳細については。 (ext3とext4はext2上に構築され、ほとんど同じ構造を使用します。)

4
geekosaur

ファイルに関する情報は、iノードと呼ばれるデータ構造に格納されます。この構造には、アクセス許可を含むモードのフィールドがあります。私のシステムのこのフィールドは、2バイトと16ビットのunsignedshortです。

Linuxソースのfs.hを見て、自分の目で確かめてください。

3
Mr. Shickadance