概述
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 一起正確設定。