關于目錄有三種權限:
r - -可讀權限,可以列出目錄下的内容(但如果要列出目錄下的内容必須要能進入這個目錄所需要的權限為 r-x)
-w-可寫權限,可以往目錄裡些内容(但是如果如果往目錄裡面些内容,那麼這個目錄的權限至少是-wx,首先得進入這個目錄)
- -x可執行的權限,可以進入一個目錄(但是不能讀或者寫)
是以如果使用者要進入一個目錄,那麼權限至少–x
關于檔案的三種權限:
r- - 可讀權限列出檔案内容
- w-該檔案是可寫,修改的可删除的
- -x該檔案是可以執行的
而通常情況下使用者隻要對某個目錄具備w寫入權限,便可以删除該目錄中的任何檔案,而不論這個檔案的權限是什麼。
首先建立一個目錄:[[email protected] admin]# mkdir test
再修改目錄的權限:[[email protected] admin]# chmod 777 test
接着在該目錄下建立一個檔案:[[email protected] test]# touch file
然後在普通使用者模式下删除這個檔案:[[email protected] test]$ rm -r file
但是我們建立的這個檔案的對于普通使用者而言隻有-r(隻讀)的屬性,不具有-w屬性是不能對這個檔案進行删除的,但為什麼确實是可以在普通使用者的模式下删除這個檔案的。因為使用者從目錄裡得到了rwx的權限是以可以将目錄下的檔案删除。普通使用者都可以任意的删除根使用者下建立的檔案很可能造成意想不到的結果是以我們需要設定粘滞位
粘滞位權限便是針對此種情況設定,當目錄被設定了粘滞位權限以後,即便使用者對該目錄有寫入權限,也不能删除該目錄中其他使用者的檔案資料,而是隻有該檔案的所有者和root使用者才有權将其删除。設定了粘滞位之後,正好可以保持一種動态的平衡:允許各使用者在目錄中任意寫入、删除資料,但是禁止随意删除其他使用者的資料。
如何設定粘滞位?
設定粘滞位是針對目錄而言的,對檔案是無效的,設定粘滞位也是在修改目錄的權限,是以我們需要用chmod去修改(設定粘滞為是為了針對其他使用者不能随意修改根目錄下的檔案)
設定了粘滞位權限的目錄,使用ll指令檢視其屬性時,其他使用者權限處的“x”将變為“t”(是在根使用者下修改的test這個目錄的屬性)
[[email protected] ~]$ sudo chmod o+t test
此時我們用普通使用者再去通路test這個目錄:
[[email protected] ~] cdtest[admin@localhosttest] ll
此時我們再試圖删去這個檔案
[[email protected] test]$ rm file
此時就無法在普通使用者模式下任意删除其他使用者的資料了,也不能任意的修改資料
取消粘滞位這個屬性:
[[email protected] ~]$ sudo chmod o-t test