Linux下粘滯位

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

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

先看一個例子:

我們這裏進入根目錄,看看根目錄當中文件的權限:


這裏我們發現有一個很特別的東西:那就是對於tmp這個文件,它的其他用戶的權限上出現了一個字符“t”,之前我們討論過,“r”表示讀權限,“w”表示寫權限,“x”表示可執行權限,“-”表示沒有對應權限,而這裏的“t”又表示什麼呢?

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


這裏我們切換到root用戶,並創建一個名爲test的目錄,並在其中創建一個文件file,然後切回普通用戶:


我們進入test目錄,發現我們並不能對這個由root用戶所創建的file文件進行修改,也不能執行,因爲我們作爲普通用戶並沒有這個權限,這裏我們就要做一件“不道德”的事:


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

這裏爲什麼會出現這個問題呢?關鍵在於root用戶在創建這個目錄的時候,給了其他用戶寫權限,本意是想讓其他用戶也能在我們這個目錄中創建文件,結果沒想到卻被別人把自己辛辛苦苦寫的東西給刪了,直接淚崩。。。

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

這個“t”所代表的權限就是粘滯位(粘着位),它只能應用在目錄文件上,將使用戶在目錄中執行刪除時,只能刪除自己擁有的對象。


如上圖,在加上粘滯位這個特殊權限後,我們這個“不懷好意”的用戶就刪不掉別人的東西了。

注意:

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

這裏粘滯位的設置,是爲了限制其他用戶的,是爲了達到能夠讓別人在自己的目錄中創建文件,但不能讓別人刪掉自己創建的文件,只能刪掉它自己的東西。

而且,需要提的一點是粘滯位的設置只是對於目錄文件,對於其他類型文件無效,當然也沒有什麼意義。

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