Linux下的文件權限linux
在linux下每個文件和目錄都有本身的訪問權限,訪問權限肯定了用戶可否訪問文件或者目錄和怎樣進行訪問。最爲咱們熟知的一個文件或目錄可能擁有三種權限,分別是讀、寫、和執行操做,在這裏不作詳細說明。咱們建立一個文件後系統會默認地賦予全部者讀和寫權限。固然咱們也能夠本身修改它,添加本身須要的權限。ui
特殊權限it
可是這三種權限就足夠了嗎?咱們如今來講說在linux下的另外一個特殊權限。首先咱們來看看在根目錄下的一個目錄tmp,能夠看到tmp目錄的other權限是'rwt',那麼這裏的t又是什麼權限呢,有什麼意義。test
在理解這個權限以前咱們先來看看tmp這個目錄是存放什麼東西的,linux下tmp目錄是存放一些臨時文件的,那麼上圖能夠看到,該目錄的全部者和組用戶的權限都是rwx,對於other的權限是rwt。權限
咱們知道若是一個目錄的other權限設置有寫和執行權限的話,那麼別的用戶也是能夠在該目錄下進行建立文件和刪除文件等操做,咱們來試一試:im
如今是root用戶,在它的根目錄下建立了一個cur目錄,而且賦予了777權限。數據
以後再給cur目錄下新建了test1和test2兩個文件,而此時咱們能夠看到這兩個文件的other權限只有一個讀權限。img
如今咱們切換用戶到dh用戶下,試着刪除剛剛新建的文件,發現是徹底能夠刪除的。那麼這就存在了一個問題,像/tmp目錄的權限是應該設置成"rwxrwxrwx"的,由於它要容許任何用戶都能在該目錄下建立、刪除、移動文件等操做。但咱們剛剛也看到了,個人dh用戶是能夠刪除root用戶在cur目錄下建立的文件夾,那麼對於tmp目錄,任意用戶均可以刪除系統服務運行中的臨時文件(別的用戶的),那麼這確定是咱們不想要的。移動
因此回到最初,咱們看到tmp目錄的權限是"rwxrwxrwt",這裏的t就起了至關重要的做用。刪除文件
粘滯位(粘着位)
上面所說的t權限就是咱們在這裏要講的粘滯位(sticky bit),咱們給剛剛的cur目錄採用chmod o+t的方式給other用戶設置粘滯位。
而後咱們繼續切換到dh用戶,看看咱們可否繼續以前的刪除操做:
能夠看到此時咱們是沒有權限刪除root用戶建立的文件了,這也就是粘滯位的做用。
粘滯位權限即是針對此種狀況設置,當目錄被設置了粘滯位權限之後,即使用戶對該目錄有寫入權限,也不能刪除該目錄中其餘用戶的文件數據,就是隻有該文件的全部者和root用戶纔有權將其刪除。設置了粘滯位以後,正好能夠保持這種動態的平衡:容許各用戶在目錄中任意寫入、刪除數據,可是禁止隨意刪除其餘用戶的數據。
幾點說明
對於特殊權限的添加是添加在原有的執行權限上的,因此特殊權限添加的要求須要文件或者目錄自己具備可執行權限。
上圖中,我去掉了cur的other的執行權限,能夠看到原本't'的位置變成了'T',此時dh用戶在cur目錄中是不具備權限來進行一系列操做的。
那麼原來的執行標誌x到哪裏去了呢? 系統是這樣規定的, 假如原本在該位上有x, 則這些特別標誌 (suid, sgid, sticky) 顯示爲小寫字母 (s, s, t).不然, 顯示爲大寫字母 (S, S, T) 。
注意事項
》粘滯位權限是針對目錄的,對文件無效
上述的這些操做是在root用戶下建立了一個test.c文件,而後添加了t權限,然而在dh用戶下仍是能夠直接進行刪除的。因此粘滯位是針對有執行權限的目錄的,對於文件添加粘滯位並無什麼做用。