天天看點

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

(一)linux檔案屬性

Linux檔案屬性不僅規定了檔案的所有者(user)和所屬組(group),還規定了所有者,所屬組以及其他使用者對該檔案的權限。我們可以用 ls -l 或ls -al指令來檢視這些屬性。如下:

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

第一列中包含檔案的類型,以及檔案所有者、所屬組和其他使用者對檔案的權限。 第一列第一個字元代表檔案類型: 上例中我們隻看到“d”和“-”兩種檔案類型,除此之外的檔案類型還有“l”,“b”,“c”,“s”等。具體描述如下: “ d ” 表示該檔案為目錄 ; “ - ”表示該檔案為普通檔案; “ l ” 表示該檔案為連結檔案(linkfile); “ b ”表示該檔案是塊裝置,即裝置檔案裡面的可供存儲的接口裝置; “ c ”表示該檔案為裝置檔案裡面的串行端口裝置(例如:滑鼠、鍵盤等一次性讀取裝置); “ s ”表示該檔案為套接字檔案(socket),用于程序間通信。 接下來的九個字元以三個字元為機關分别表示檔案所有者,檔案所屬使用者組,其他使用者的權限(可讀(read)、可寫(write)、可執行(eXecute))。 例如:上圖中的 .bash history,該檔案是一個普通檔案檔案擁有者對該檔案可讀、可寫但不可執行,檔案所屬組和其他使用者對該檔案不可讀、不可寫、不可執行。

(二)更改檔案權限 2.1   chgrp指令 功能:(change group)改變檔案所屬使用者組。 格式:chgrp [組名] [檔案名]

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

當然,chgrp指令也可以更改檔案目錄的所屬組,例如:

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

但是,這裡我們可以發現chgrp隻改變了目錄本身,并沒有改變目錄下的其他檔案或目錄屬性。那如果我們想要級聯更改子目錄及子檔案呢?這裡就不得不提到 -R參數: 使用  chgrp -R dirname    -R 進行遞歸的持續更改,即連子目錄下的所有檔案、目錄都更新成這個使用者組

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

2.2  chown指令 功能:(change owner)更改檔案所有者。 格式:chown [所有者] [檔案名]   /  chown  -R  [所有者] [檔案名]

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

2.3 chmod指令 功能:更改檔案權限 格式: ①符号類型改變檔案權限  如:chmod  u=rwx,o=r,g=r   filename 前文中我們已經介紹了檔案權限格式,例如,-rwxr--r--則表示該檔案對所有者可讀可寫可執行,但對于所屬組和其他使用者隻可讀、不可寫、不可執行。我們可以使用“u”,“g”,“o”來分别表示user,group,other的屬性。我們可以對“u”,“g”,“o”分别指派來實作權限的更改,也可以針對“u”,“g”,“o”增加或減少某個權限。具體規則如下表:

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

②數字類型改變檔案權限  如:chmod  644 filename 前文中我們已經介紹了檔案權限格式,例如,-rwxr--r--則表示該檔案對所有者可讀可寫可執行,但對于所屬組和其他使用者隻可讀、不可寫、不可執行。Linux下可使用數字代替“rwx”,具體規則為:r=4,w=2,x=1,-=0。那麼上述的權限“-rwxr--r--”用數字表示就是744。具體算法為:rwx=4+2+1=7,r--=4+0+0=4,r--=4+0+0=4。 具體操作如下圖:

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

2.4  umask指令

功能:改變檔案的預設權限

格式:umask xxx  (這裡的xxx表示三個數字),也可以直接輸入umask檢視其預設的值。

知道了這些,那麼umask的值應該怎麼設定呢?我們先看以下兩條規則:

  • 若使用者建立一個普通檔案,則預設是沒有可執行權限的,即最大值為666(-rw-rw-rw-)。
  • 若使用者建立的是目錄,則預設為所有權限都開放,即777(drwxrwxrwx)。

umask的值代表的是以上兩條規定中的預設值需要減掉的權限。

例如:可寫權限非常重要,是以預設權限時我們會去掉寫權限。即在預設情況下,我們一般設定目錄的權限值為755,普通檔案的權限值為644。

則:目錄的權限為“rwxrwxrwx” - “----w--w-” = “ rwxr-xr-x ”(umask 022)

        普通檔案的權限為“rw-rw-rw-” - “----w--w-” = “rw-r--r--” (umask 022)

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

從上圖我們可以看到,查找時顯示的umask值是四位而我們設定的umask值指的是umask值的後三位,那麼umask值的第一位數值代表的是什麼呢?這就涉及到檔案的一些特殊權限了。當有特殊權限時,第一位數字可以是0~7中的任意一個數字,每一個數字代表一種特殊權限。今天在這裡我們隻分析一種特殊權限,即sticky bit。

(三)粘滞位(sticky bit)

粘滞位也可以了解為防删除位,它的作用是讓使用者隻能删除屬于自己的檔案。

我們知道一個檔案是否可以被某個使用者删除,主要取決與該檔案所在目錄對該檔案是否有寫的權限。如果使用者對目錄有寫權限,使用者不僅可以向該目錄下添加檔案,也可以删除該目錄下的檔案和子目錄,即使該使用者不是這些檔案的所有者,而且也沒有讀或寫許可。但是如果我們希望使用者在該目錄下隻可以添加檔案但不能删除該目錄下的檔案,這個時候我們就可以給父目錄設定粘滞位權限,增加了該權限後,即使使用者對該目錄有寫的權限,也不能随意的删除該目錄下不屬于它的檔案和目錄。(但是該目錄下的目錄不繼承改權限,要重新設定以後才可使用。)

【Linux】檔案的權限管理及特殊屬性-粘滞位(sticky bit)概述

我們發現設定粘滞位之後權限中最後一位就變成了 t 或者 T ,那可執行權限x又去哪了呢?t 、T有分别代表什麼含義呢?

系統是這樣規定的, 假如本來在該位上有x, 則這些特别标志如:sticky bit顯示為小寫字母  t ,

 否則, 顯示為大寫字母  T 。

最後在用網上截取的關于粘滞位的内容來結束這篇部落格吧!~~

在以前舊的系統當中,如果一個程式檔案一旦設定了粘滞位,那麼當該程式中止的時候他的所有指令段将被儲存到系統的交換分區當中,  再次運作時可以更快的調入系統。不過現在的作業系統已經不再使用這種功能了。但這并不表示這一功能已經完全被廢棄。當一個目錄設定為粘滞位時,它将發揮特殊的作用,即當一個目錄被設定為"粘滞位"(用chmod a+t),則該目錄下的檔案隻能由 :

1)、超級管理者删除  

2)、該目錄的所有者删除  

3)、該檔案的所有者删除  

也就是說,即便該目錄是任何人都可以寫,但也隻有檔案的屬主才可以删除檔案。

繼續閱讀