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

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

権限ビットは 12 個あり、そのうち 3 ビットのグループが 3 つあり、それぞれ RWX でユーザー、グループ、その他に割り当てられていると理解しています。RW は読み取りと書き込みですが、X はsearchディレクトリ用とexecuteファイル用です。

私が理解できないのは次の点です:

  1. 残りの 3 つのモード ビットは何ですか。それらはすべて inode に格納されますか。

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

答え1

stat /bin/su1 つのシステムに表示されます:

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

12 個のモード ビットすべてを8 進数で表したものがここにあります4755。数字はビットに対応します。

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

ここでuuu、、gggおよびはooo、ユーザー、グループ、およびその他の権限ビットです。残りのグループ (順番が最初のグループ) には、setuid ( su)、setgid ( sg)、および sticky ( t) ビットが含まれます。

setuid ビットと sticky ビットは、ほとんどのファイルではゼロなので、あまり言及されません。しかし、これらはすべてのファイルに存在し、他のファイルと一緒に保存されます。


実際に考えてみると、いくつかのファイルシステムとインターフェースはファイルを保存しているタイプモードビットに沿って、さらに上位のビットに。上記は12ビットのみを考慮しているため、16ビットフィールドでは4ビットが余ります。たとえば、st_modeの説明stat(2)

答え2

  1. 残りの3ビットはsetuid、setgid、stickyビットを表します。UNIX の権限とファイルの種類を理解する詳細については、こちらをご覧ください。これらはすべて inode に保存されます。

  2. ディレクトリは、名前とそれに対応する inode のリストを格納するファイルの一種です。ディレクトリ自身の名前と inode は親ディレクトリに格納されます。ルートディレクトリは特別なケースで、通常はファイルシステム内の固定の inode です (Ext4 の inode 2) であり、もちろん常に名前が付けられます/(マウント ポイントを基準とした相対的な名前になります)。

関連情報