天天看點

自學Linux Shell7.3-linux共享檔案

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組内的所有使用者都能通路這個檔案