天天看點

Linux下粘滞位

之前已經分析過Linux下的檔案權限:http://blog.csdn.net/chenkaixin_1024/article/details/64924059,我們已經知道對于一個檔案,存在檔案擁有者,檔案所屬組以及其他使用者,而且這三者對于檔案而言,都有可能有讀,寫,可執行三種權限,而且在Linux下,這些權限也隻是常見的基本權限,除此之外,還存在特殊權限:

這裡就先介紹其中一個特殊權限:

先看一個例子:

我們這裡進入根目錄,看看根目錄當中檔案的權限:

Linux下粘滞位

這裡我們發現有一個很特别的東西:那就是對于tmp這個檔案,它的其他使用者的權限上出現了一個字元“t”,之前我們讨論過,“r”表示讀權限,“w”表示寫權限,“x”表示可執行權限,“-”表示沒有對應權限,而這裡的“t”又表示什麼呢?

在了解“t”所代表的權限之前,先看一個問題:

Linux下粘滞位

這裡我們切換到root使用者,并建立一個名為test的目錄,并在其中建立一個檔案file,然後切回普通使用者:

Linux下粘滞位

我們進入test目錄,發現我們并不能對這個由root使用者所建立的file檔案進行修改,也不能執行,因為我們作為普通使用者并沒有這個權限,這裡我們就要做一件“不道德”的事:

Linux下粘滞位

既然我們修改不了這個檔案,也執行不了這個檔案,那我索性就把這個檔案給删了,省的放在這礙眼。結果竟然成功的把這個檔案給删除了,要知道這是root使用者辛辛苦苦建立出來的檔案啊,竟然被我們這個其他使用者給直接删了,這如果是個你花了三天三夜寫的一份代碼,被别人一聲不吭的給直接删了,那你會怎麼樣?

這裡為什麼會出現這個問題呢?關鍵在于root使用者在建立這個目錄的時候,給了其他使用者寫權限,本意是想讓其他使用者也能在我們這個目錄中建立檔案,結果沒想到卻被别人把自己辛辛苦苦寫的東西給删了,直接淚崩。。。

那麼為了解決這個坑爹的問題,我們就得使用前面所提到的特殊權限,也就是之前出現的字元“t”所代表的權限:

這個“t”所代表的權限就是粘滞位(粘着位),它隻能應用在目錄檔案上,将使使用者在目錄中執行删除時,隻能删除自己擁有的對象。

Linux下粘滞位

如上圖,在加上粘滞位這個特殊權限後,我們這個“不懷好意”的使用者就删不掉别人的東西了。

注意:

很多人會疑惑,這裡的粘滞位權限是寫在原本可執行權限的位置的,那又怎麼表示可執行權限呢?這裡雖說粘滞位權限辨別符将可執行權限的辨別符覆寫了,但是它們是獨立的,Linux下在具有粘滞位權限的時候,以“T”表示這個地方具有粘滞位權限,但沒有可執行權限;以“t”表示這裡同時具有可執行權限和粘滞位權限。

這裡粘滞位的設定,是為了限制其他使用者的,是為了達到能夠讓别人在自己的目錄中建立檔案,但不能讓别人删掉自己建立的檔案,隻能删掉它自己的東西。

而且,需要提的一點是粘滞位的設定隻是對于目錄檔案,對于其他類型檔案無效,當然也沒有什麼意義。

繼續閱讀