7.3-linux共享檔案
在linux系統中共享檔案的方法是通過建立組。
1. linux為每個檔案和目錄存儲了3個額外的資訊位:
-
SUID設定使用者ID
當檔案被使用者使用時,程式會以檔案屬主的權限運作
-
SGID設定組ID
對檔案來說,程式會以檔案屬組的權限運作
對目錄來說,目錄建立的新檔案會以目錄的預設屬組作為預設屬組
-
粘着位
程序結束後檔案還駐留在記憶體中
SUID設定使用者ID用s表示。
- 使用者對應的前三位的x位上如果有,就用小s表示suid。當x位上沒有x的時候,suid就是大寫的S。
- 設定使用者ID位就是讓普通使用者可以以root或其他使用者的權限運作隻有root或其它使用者才能運作的程式或指令,或程式指令對應本來沒有權限操作的檔案等。
- 僅對二進制指令程式有效,不能用在shell等類似腳本檔案上。shell腳本僅僅是調用二進制指令程式而已,是以,具體權限還需要看二進制指令本身。
- 二進制指令程式需要有可執行權限x\
- suid權限僅在程式執行過程中有效。
- 執行指令的任意使用者可以獲得該指令程式執行期間擁有這的權限。
- suid是雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。
SGID設定組ID 與suid不同,sgid既可以針對檔案,也可以陣地目錄設定。sgid是針對使用者權限修改的。
sgid主要用在目錄中,當為某個目錄設定了sgid位以後,在該目錄中建立的檔案具有該目錄的所有這權限,而不是建立該檔案的使用者的預設所有者。這樣,使得在多個使用者之間共享一個目錄中的檔案 變得簡單。
對檔案,sgid功能如下:
- sgid僅對二進制指令程式有效。
- 二進制指令或程式需要可執行權限。
- 執行程式的任意使用者可以獲得該指令程式執行期間所屬組的權限。
對目錄,sgid功能如下:
- 使用者在此目錄下建立的檔案和目錄,具有和此目錄相同的使用者組設定。
粘着位 sticky bit
粘滞位功能用得少,不過對于/tmp目錄這樣的,是整個系統臨時檔案存放地,需要設定粘滞位。
一個目錄即使開發所有權限rwxrwxrwx,如果設定了粘滞位,除非目錄屬主和root使用者有權限删除它,其它使用者不能删除這個目錄。
讓所有使用者都具有/tmp目錄所有權限,但是每個使用者隻能删除自己的檔案。用t表示,如果沒有執行權限,那麼就是T。/tmp目錄誰都可以寫,常常是木馬第一手跳闆地點。
2. 如何共享檔案
- 用mkdir指令建立共享目錄
- 通過chgrp指令将目錄的預設屬組改成包含所有需要共享檔案的使用者的組
- 更改目錄的SGID位置位,確定目錄中的建立檔案都用shared作為預設屬組
- 所有組成員将umask值設定成檔案對屬組成員可寫
- 最後,,組成員能到共享目錄下建立新檔案,同時shared組内的所有使用者都能通路這個檔案