Linux 中 Sticky Bit 的用途

Nilesh Katuwal 2023年1月30日
  1. Linux 中的 Sticky Bit 簡介
  2. Linux 中 Sticky Bit 的歷史
  3. Linux 中的粘滯位示例
Linux 中 Sticky Bit 的用途

粘性位是檔案或目錄上的許可權位,僅允許檔案/目錄所有者或 root 使用者刪除或重新命名檔案。其他使用者不能刪除其他使用者生成的檔案。

Linux 中的 Sticky Bit 簡介

粘性位是類 Unix 系統自己的訪問許可權標誌,可以賦予檔案和目錄。

有兩種不同的定義:一種用於檔案,另一種用於目錄。

超級使用者可以將檔案(尤其是可執行檔案)標記為保留在主記憶體中,即使它們的使用已經結束,以避免發生其他需求時發生的交換。

該檔案必須從相對較慢的輔助記憶體中重新載入。由於 swap 優化,這個功能已經沒用了。

當設定了目錄的粘性位時,檔案系統會以不同的方式處理該目錄中的檔案,只允許檔案的所有者、目錄的所有者或 root 使用者重新命名或刪除檔案。

如果沒有設定粘性位,任何使用者寫入和執行對目錄的訪問都可以重新命名或刪除其內容,而不管檔案的所有者如何。

這通常放在 /tmp 目錄中,以防止普通使用者刪除或傳輸屬於其他使用者的檔案。

Linux 中 Sticky Bit 的歷史

在 Unix 第五版(1974 年)中,引入了粘性位以用於純可執行檔案。設定後,它告訴作業系統在操作完成後將程式的文字段保留在交換空間中。

這通過允許核心在單個操作中將應用程式從交換記憶體移動到實際記憶體來加速後續執行。

因此,常用程式(例如編輯器)的載入速度會大大提高。

更改 stickied 程式中的可執行檔案需要從可執行檔案中刪除粘性位,執行程式並退出以清除快取,替換二進位制可執行檔案並恢復粘性位。

Linux 中的粘滯位示例

使用一些示例,我們將在本節中介紹如何設定和取消設定 sticky bits

建立一個目錄並授予所有使用者執行許可權

$ mkdir thanos

結果,建立了一個名為 thanos 的目錄。

$ mkdir chmod 777 thanos/

使用 chmod 命令為所有使用者授予 read-write-execute 訪問許可權。

在此目錄中建立多個具有不同使用者的檔案,以讀取、寫入和執行檔案。

$ ls -ld thanos/

輸出:

drwxrwxrwx 2 user user 4096 Feb  2 14:05 thanos/

使用 chmod 命令的 +t 標誌,啟用目錄上的粘性位。

$ chmod +t thanos/
$ ls -ld thanos/

輸出:

drwxrwxrwt 2 user user 4096 Feb  2 14:05 thanos/

可以看出,許可權位 t 新增到目錄的許可權位。Sticky bits 在每個作業系統中的功能都不同。