私が知る限り、権限ビットは12個で、そのうちのユーザー、グループ、および他のユーザーはそれぞれ3つのグループを持ち、各グループは3ビットを持ち、これはRWXです。 RWは読み書き用ですが、Xの場合はsearch
ディレクトリとexecute
ファイルです。
私が理解していないものは次のとおりです。
残りの3つのモードビットは何ですか?すべてinodeに保存されていますか?
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
その中には、ユーザー、グループ、および他のユーザーの権限ビットがありますggg
。ooo
残りのグループ(シーケンスの最初のグループ)には、setuid(su
)、setgid(sg
)、およびSticky(t
)ビットが含まれます。
setuid と固定ビットはほとんどのファイルではゼロなので、一般的に言及されていません。他のファイルと一緒に保存された各ファイルにはまだ存在します。
真剣に考えると、一部のファイルシステムとインタフェースはファイルを保存します。タイプモードビットに沿って、より高いビットで。上では12ビットだけを占めるので、16ビットフィールドには4ビットが残る。例えばst_mode
で説明されています。stat(2)
。
答え2
残りの3ビットはそれぞれsetuid、setgid、および固定ビットを表します。UNIXの権限とファイルタイプの理解もっと学ぶ。これはinodeに保存されます。
ディレクトリは、実際には名前とその inode リストを保存するファイルです。ディレクトリの独自の名前と inode は親ディレクトリに保存されます。ルートディレクトリは通常、ファイルシステムの固定inodeである特別なケースです。Ext4のインデックスノード2)もちろん、常に名前が付けられます
/
(最終的にはマウントポイントに基づいています...)。