天天看點

Linux的粘滞位

什麼是粘滞位?設定粘滞位和不設定粘滞位有什麼差別呢?

粘滞位是在1974年Unix的第5版中引入的,用來設定可執行檔案。當可執行檔案設定粘滞位之後,它能夠訓示作業系統在程式退出後,保留程式的代碼段到swap空間。當程式再次執行時,核心隻需将程式從swap搬到記憶體即可,這能夠加速程式的執行。是以,頻繁使用的程式比如編輯器能夠更快的打開。目前,這種應用隻是适用于HP-UX, NetBSD和UnixWare,Solaris在2005年放棄了這種應用,linux沒有版本支援過這種行為。

當路徑被設定粘滞位後,路徑下的檔案隻有檔案的owner, 或者root 才能夠重命名、删除檔案。如果沒有粘滞位,任何使用者,不管是不是owner, 隻要有路徑的寫/執行權限就可以重命名、删除檔案。典型的應用就是/tmp路徑,粘滞位可以阻止一般使用者删除/重命名其他使用者的檔案。

例如:在root的根目錄下有個臨時檔案夾/tmp,/tmp常被我們用來存放臨時檔案,是所有使用者。可以看到tmp的權限為777

Linux的粘滞位

在/tmp下建立一個檔案

Linux的粘滞位

傳回到普通使用者,在該目錄下删除root下/tmp裡的檔案

Linux的粘滞位

可以看到直接被删除掉了!可以說隻要使用者具有寫/執行權限就可以直接删除任何檔案,不管是不是自己建立的檔案。如果你隻想讓别人看到你的檔案而不想讓檔案被改變,那麼這種情況下是非常不安全的!這時就可以設定粘滞位了!

我們進入root下給tmp加上"粘着位"(用chmod a+t),然後傳回到普通使用者

Linux的粘滞位

我們再次回到普通使用者下删除剛剛在root/tmp裡建立的檔案

Linux的粘滞位

所有當一個目錄被設定為“粘滞位”(用chmod a+t)時,在該目錄下的檔案隻能被

1、超級管理者删除

2、該目錄的所有者删除

3、該檔案的所有者删除

這就是Linux裡的粘滞位作用!

繼續閱讀