首頁 > 套件與系統管理 > setgid

setgid:理解和設定 SGID 位元

setgid 是套用至檔案或目錄的一種特殊權限位元。當設定在目錄上時,該目錄內建立的所有檔案和子目錄都會繼承父目錄的群組擁有權。當設定在可執行檔上時,該檔案在執行時會以檔案擁有者的群組 ID 來執行。這在共享環境中便於管理群組權限,或確保特定程式以特定群組權限執行時非常有用。

概述

setgid 位元是檔案系統權限的一種,它對檔案和目錄有不同的作用。當套用於目錄時,該目錄內建立的所有新檔案和子目錄都會自動繼承父目錄的群組擁有權。當套用於可執行檔時,該檔案在執行時會以檔案擁有者的群組 ID 來執行處理程序。

主要特點

  • 目錄:在該目錄內建立的檔案和子目錄會繼承父目錄的群組擁有權。
  • 可執行檔:在執行該檔案時,處理程序會以檔案擁有者的群組 ID 來執行。
  • 使用 `chmod` 命令來設定和解除設定。

使用範例

setgid 位元使用 `chmod` 命令來設定。您可以使用數字模式 (2xxx) 或符號模式 (g+s)。

在目錄上設定 setgid (符號模式)

sudo chmod g+s /shared_data

在 `/shared_data` 目錄上設定 setgid 位元,以便在此目錄內建立的所有檔案和子目錄繼承 `/shared_data` 的群組擁有權。

在目錄上設定 setgid (數字模式)

sudo chmod 2770 /shared_data

將 setgid 位元 (2) 添加到現有權限 (rwxrwx---) 中,設定為 2770。

在可執行檔上設定 setgid

sudo chmod g+s /usr/local/bin/my_tool

讓特定可執行檔始終以特定群組權限執行。(例如:`my_tool` 以 `tool_group` 權限執行)

移除 setgid 位元

sudo chmod g-s /path/to/item

從檔案或目錄中移除 setgid 位元。

檢查 setgid 設定

ls -l /path/to/item

使用 `ls -l` 命令檢查檔案或目錄的權限。如果群組權限位置顯示 's',則表示已設定 setgid。

提示與注意事項

setgid 位元是一個強大的功能,使用時需要謹慎。

目錄 setgid 的應用

  • 在共享工作目錄中,當多個使用者需要以相同群組建立檔案時非常有用。
  • 可以保持新建立檔案的群組擁有權一致,減少權限問題。

可執行檔 setgid 的注意事項

  • 在可執行檔上設定 setgid 可能會導致安全漏洞,因此必須謹慎使用。
  • 僅應套用於可信賴且經過安全驗證的可執行檔。

與 umask 的互動

當在設定了 setgid 位元的目錄中建立檔案時,也會考慮 `umask` 設定。`umask` 會限制新建立檔案的預設權限,因此需要與 setgid 一起正確設定。


相同類別命令