UNIX特権モードビットの最後の3ビットは何ですか?

UNIX特権モードビットの最後の3ビットは何ですか?

私が知る限り、権限ビットは12個で、そのうちのユーザー、グループ、および他のユーザーはそれぞれ3つのグループを持ち、各グループは3ビットを持ち、これはRWXです。 RWは読み書き用ですが、Xの場合はsearchディレクトリとexecuteファイルです。

私が理解していないものは次のとおりです。

  1. 残りの3つのモードビットは何ですか?すべてinodeに保存されていますか?

  2. UNIXのすべてがファイルであるため、ファイルディレクトリ自体もファイルと見なされます(本当ですか?)UNIXシステムはACLを使用してファイルシステムを表すため、ファイルシステムはfilename-inode_numberリストのペアです。ファイルディレクトリは自分のinode番号とファイル名をどこに保存しますか?

答え1

stat /bin/suあるシステムでは、次のように表示されます。

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

4755すべての12モードビットの8進数表現です。数字はビットに対応します。

octal    4   7   5   5
bits   100 111 101 101
       sst uuu ggg ooo
       ug  rwx rwx rwx

uuuその中には、ユーザー、グループ、および他のユーザーの権限ビットがありますgggooo残りのグループ(シーケンスの最初のグループ)には、setuid(su)、setgid(sg)、およびSticky(t)ビットが含まれます。

setuid と固定ビットはほとんどのファイルではゼロなので、一般的に言及されていません。他のファイルと一緒に保存された各ファイルにはまだ存在します。


真剣に考えると、一部のファイルシステムとインタフェースはファイルを保存します。タイプモードビットに沿って、より高いビットで。上では12ビットだけを占めるので、16ビットフィールドには4ビットが残る。例えばst_modeで説明されています。stat(2)

答え2

  1. 残りの3ビットはそれぞれsetuid、setgid、および固定ビットを表します。UNIXの権限とファイルタイプの理解もっと学ぶ。これはinodeに保存されます。

  2. ディレクトリは、実際には名前とその inode リストを保存するファイルです。ディレクトリの独自の名前と inode は親ディレクトリに保存されます。ルートディレクトリは通常、ファイルシステムの固定inodeである特別なケースです。Ext4のインデックスノード2)もちろん、常に名前が付けられます/(最終的にはマウントポイントに基づいています...)。

関連情報