ユーザー、グループ、その他それぞれに3ビットの3つのグループがあり、それぞれRWXである12の許可ビットがあることを理解しています。 RWは読み取りと書き込みですが、Xの場合はディレクトリの場合はsearch
、ファイルの場合はexecute
です。
ここに私が得ないものがあります:
残りの3つのモードビットとは何ですか?それらはすべてiノードに保存されていますか?
UNIXのすべてのものはファイルであるため、ファイルディレクトリ自体もファイルと見なされます(これは本当ですか?)。ただし、UNIXシステムはACLを使用してファイルシステムを表すため、ファイルシステムはfilename-inode_numberのリストです。ペア。ファイルディレクトリは、それ自体のiノード番号とファイル名をどこに保存しますか?
_stat /bin/su
_は1つのシステムで表示されます。
_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ビットは、ほとんどのファイルでゼロであるため、言及されないことがよくあります。それらは、他のファイルと一緒に保存され、すべてのファイルに対して引き続き存在します。
実際にそれに取り掛かると、一部のファイルシステムとインターフェイスは、ファイルtypeをモードビットに沿ってさらに高いビットに格納します。上記は12ビットのみを占めるため、16ビットのフィールドでは、4が残ります。たとえば、 stat(2)
の_st_mode
_の説明 を参照してください。
残りの3ビットは、setuid、setgid、stickyビットを表します。詳細は NIXの権限とファイルタイプについて を参照してください。これらはすべてiノードに格納されます。
ディレクトリは確かに、名前と対応するiノードのリストを格納する一種のファイルです。ディレクトリ自体の名前とiノードはその親ディレクトリに格納されます。ルートディレクトリは特殊なケースであり、通常はファイルシステムの固定iノード( Ext4のiノード2 )であり、もちろん常に/
(最終的にはマウントポイントに相対的になります...)。