
據我所知,有12個權限位,其中使用者、群組和其他使用者各有3組,每組3位,分別是RWX。 RW 是讀和寫,但對 X 來說是search
目錄和execute
檔案。
這是我不明白的:
剩下的 3 個模式位元是什麼?
我知道文件目錄本身也被認為是一個文件,因為UNIX中的所有東西都是文件(這是真的嗎?),但是由於UNIX系統使用ACL來表示文件系統,那麼文件系統就是文件名-inode_number的列表對。檔案目錄在哪裡儲存它自己的索引節點號碼和檔案名稱?
答案1
stat /bin/su
在一個系統上顯示:
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
4755
所有 12 個模式位的八進位表示形式。此數字對應於位:
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
剩下的三位分別代表setuid、setgid和sticky位;看了解 UNIX 權限和檔案類型了解詳情。這些都儲存在inode中。
目錄實際上是一種儲存名稱清單和對應索引節點的檔案。目錄自己的名稱和inode儲存在其父目錄中;根目錄是一種特殊情況,它通常是檔案系統中的固定索引節點(Ext4 中的索引節點 2)並且當然總是被命名
/
(最終相對於它的安裝點...)。