linux基礎知識-第四天
Linux文件系統上的特殊權限
SUID, SGID, Sticky
權限
r, w, x
user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組;
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限;
(2) 啟動為進程之後,其進程的屬主為發起者;進程的屬組為發起者所屬的組;
(3) 進程訪問文件時的權限,取決於進程的發起者:
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限;
(b) 進程的發起者,屬於文件的屬組;則應用文件屬組權限;
(c) 應用文件“其它”權限;
SUID
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限;
(2) 啟動為進程之後,其進程的屬主為原程序文件的屬主;
權限設定:
chmod u+s FILE...
chmod u-s FILE...
SGID
默認情況下,用戶創建文件時,其屬組為此用戶所屬的基本組;
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組;
權限設定:
chmod g+s DIR...
chmod g-s DIR...
Sticky
對於一個多人可寫的目錄,如果設置了sticky,則每個用戶僅能刪除自己的文件;
權限設定:
chmod o+t DIR...
chmod o-t DIR...
SUID: user, 占據屬主的執行權限位;
s: 屬主擁有x權限
S:屬主沒有x權限
SGID: group, 占據group的執行權限位;
s: group擁有x權限
S:group沒有x權限
Sticky: other, 占據ohter的執行權限位;
t: other擁有x權限
T:other沒有x權限
硬鏈接與軟件連的區別
這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode 是文件元數據的一部分但其並不包含文件名,inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊
為解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共享使用,還帶來了隱藏文件路徑、增加權限安全及節省存儲等好處。若一個 inode 號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名。
由於硬鏈接是有著相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:
文件有相同的 inode 及 data block;
只能對已存在的文件進行創建;
不能交叉文件系統進行硬鏈接的創建;
不能對目錄進行創建,只可對文件創建;
刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。
軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有著自己的 inode 號以及用戶數據塊。
軟鏈接有自己的文件屬性及權限等;
可對不存在的文件或目錄創建軟鏈接;
軟鏈接可交叉文件系統;
軟鏈接可對文件或目錄創建;
創建軟鏈接時,鏈接計數 i_nlink 不會增加;
刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
linux基礎知識-第四天