天天看點

檔案的特殊權限:SUID,SGID,SBIT---linux學習筆記(3)

我們都知道檔案權限有rwx這三種,但是我們如果試着這麼做:

檔案的特殊權限:SUID,SGID,SBIT---linux學習筆記(3)

好像還有其他權限(s,t)?這就是我們要說的檔案特殊權限。

SetUID

定義:當s标志出現檔案所有者(user)的x權限上時,具有這種權限的檔案會在其執行時,使調用者暫時獲得該檔案擁有者的權限,如上述passwd的rwsr-xr-x,我們稱為SetUID,簡稱SUID的特殊權限。

它有以下幾點限制和功能:

1. SUID隻對二進制檔案有效

2. 調用者對該檔案有執行權(x)

3. 在執行過程中,調用者會暫時獲得該檔案的所有者權限

4. 該權限隻在程式執行的過程中有效

具體我們以鳥哥私房菜的一個例子來了解:

檔案的特殊權限:SUID,SGID,SBIT---linux學習筆記(3)

注意到passwd這個檔案權限,作為普通使用者的我們是others,對passwd是具有x權限的表示我們執行passwd;passwd的擁有者(user)為root;當我們執行passwd時候,我們會短暫獲得root權限,是以可以寫入shadow這個檔案中(存儲密碼的地方)

另外,SUID僅可以用于二進制程式上,不能用在shell script上,它對目錄無效。

SetGID

與SUID類似,當s出現在使用者組(group)時候成為SetGID,簡稱SGID。但是與SUID不同的是它可以針對檔案或者目錄設定

比如說:

檔案的特殊權限:SUID,SGID,SBIT---linux學習筆記(3)

我們看到,s出現使用者組x權限處。

它有以下功能:

  1. 對二進制程式有用
  2. 執行者需要具備x權限
  3. 執行者在執行的過程中會獲得使用者組的支援

當SGID作用于普通檔案時,和SUID類似,在執行該檔案時,使用者将獲得該檔案所屬組的權限。當SGID作用于目錄時,意義就非常重大了。當使用者對某一目錄有w和x權限時,該使用者就可以在該目錄下建立檔案,如果該目錄用SGID修飾,則該使用者在這個目錄下建立的檔案都是屬于這個目錄所屬的組。

StickyBit

粘滞位(Stickybit),又稱粘着位,最常見的用法在目錄上設定粘滞位,也隻能針對⽬錄設定,對于⽂件⽆效。

它對目錄的作用是:

  • 當使用者對目錄有w,x權限即有寫入權限
  • 當使用者在該目錄下建立檔案或者目錄時候,僅自己與root才能删除該檔案

一般為目錄設定粘滞位是為了防止普通使用者删除或移動其他使用者的檔案,比如/tmp目錄。

我們知道tmp作為Linux系統的臨時⽂件夾,權限為“rwxrwxrwx”,即允許任意⽤戶、任意程式在該⽬錄中進⾏建立、删除、移動⽂件或⼦⽬錄等操作。

然⽽試想⼀下,若任意⼀個普通⽤戶都能夠删除系統服務運⾏中使⽤的臨時⽂件,将造成什麼結果?

粘滞位權限便是針對此種情況設定,當⽬錄被設定了粘滞位權限以後,即便⽤戶對該⽬錄有寫⼊權限,也不能删除該⽬錄中其他⽤戶的⽂件資料,⽽是隻有該⽂件的所有者和root⽤戶才有權将其删除。設定了粘滞位之後,正好可以保持⼀種動态的平衡:允許各⽤戶在⽬錄中任意寫⼊、删除資料,但是禁⽌随意删除其他⽤戶的資料。

注意在開始時候,我們觀察tmp目錄權限,發現其他⽤戶權限處的“x”将變為“t”,這就是粘滞位的設定。粘滞位權限都是針對其他⽤戶( other)設定,使⽤chmod指令設定⽬錄權限時,“o+t”、 “o-t”權限模式可分别⽤于添加、移除粘滞位權限。

權限設定

與前面設定rwx類似,我們也可以用數字辨別:

4表示SUID

2表示SGID

1表示SBIT

比如

chmod 4755 test 加入SUID

chmod 6755 test 加入SUID和SGID

繼續閱讀