在Linux中設置粘滯位sbit權限

1、通常情況下用戶只要對某個目錄具備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

2、通過上面的操作可以發現,雖然普通用戶natasha對文件/test/file1只具備“r--”權限,但因爲從/test目錄獲得了“rwx”權限,因而仍然可以將/test/file1刪除。

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

3、粘滯位權限便是針對此種情況設置,當目錄被設置了粘滯位權限以後,即便用戶對該目錄有寫入權限,也不能刪除該目錄中其他用戶的文件數據,而是隻有該文件的所有者和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

4、粘滯位權限都是針對其他用戶(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": 不允許的操作

 

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

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章