網路安全系列之四十一在Linux中設定粘滯位sbit許可權

科技小能手發表於2017-11-14

通常情況下使用者只要對某個目錄具備w寫入許可權,便可以刪除該目錄中的任何檔案,而不論這個檔案的許可權是什麼。

比如我們進行下面的操作:

#建立/test目錄,並賦予777許可權。

[root@localhost ~]# mkdir /test

[root@localhost ~]# chmod 777 /test

#以root使用者的身份在/test目錄中建立檔案file1,並檢視其預設許可權。

[root@localhost ~]# touch /test/file1

[root@localhost ~]# ll /test/file1

-rw-r–r–. 1 root root 0 12月 2 20:32 /test/file1

#以普通使用者natasha的身份登入系統,可以刪除/test/file1。

[natasha@localhost ~]$ rm /test/file1

rm:是否刪除有防寫的普通空檔案 “/test/file1″?y

通過上面的操作可以發現,雖然普通使用者natasha對檔案/test/file1只具備“r–”許可權,但因為從/test目錄獲得了“rwx”許可權,因而仍然可以將/test/file1刪除。

在Linux系統中比較典型的例子就是“/tmp”、“/var/tmp”目錄。這兩個目錄作為Linux系統的臨時資料夾,許可權為“rwxrwxrwx”,即允許任意使用者、任意程式在該目錄中進行建立、刪除、移動檔案或子目錄等操作。然而試想一下,若任意一個普通使用者都能夠刪除系統服務執行中使用的臨時檔案,將造成什麼結果?

粘滯位許可權便是針對此種情況設定,當目錄被設定了粘滯位許可權以後,即便使用者對該目錄有寫入許可權,也不能刪除該目錄中其他使用者的檔案資料,而是隻有該檔案的所有者和root使用者才有權將其刪除。設定了粘滯位之後,正好可以保持一種動態的平衡:允許各使用者在目錄中任意寫入、刪除資料,但是禁止隨意刪除其他使用者的資料。

需要注意的是,粘滯位許可權只能針對目錄設定,對於檔案無效。

設定了粘滯位許可權的目錄,使用ls命令檢視其屬性時,其他使用者許可權處的“x”將變為“t”。

例如,檢視/tmp、/var/tmp目錄本身的許可權,確認存在“t”標記。

[root@localhost ~]# ll -d /tmp

drwxrwxrwt. 16 root root 4096 12月 2 17:16 /tmp

[root@localhost ~]# ll -d /var/tmp

drwxrwxrwt. 3 root root 4096 12月 2 09:46 /var/tmp

粘滯位許可權都是針對其他使用者(other)設定,使用chmod命令設定目錄許可權時,“o+t”、“o-t”許可權模式可分別用於新增、移除粘滯位許可權。

例如,為/test目錄設定粘滯位許可權。

[root@localhost ~]# chmod o+t /test

[root@localhost ~]# ll -d /test

drwxrwxrwt. 2 root root 4096 12月 2 20:39 /test

此時普通使用者natasha便無法刪除/test/file1檔案了。

[natasha@localhost ~]$ rm /test/file1

rm:是否刪除有防寫的普通空檔案 “/test/file1″?y

rm: 無法刪除”/test/file1″: 不允許的操作

粘滯位許可權在生產環境中也被廣泛應用,當需要為使用者提供一個開放目錄而又不希望造成管理混亂時,通過為目錄設定粘滯位許可權便可以解決問題。

本文轉自 yttitan 51CTO部落格,原文連結:http://blog.51cto.com/yttitan/1577723


相關文章