以下摘自鸟哥的Linux私房菜
Set GID
當 s 標誌在檔案擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 囉!是這樣沒錯!^_^。 舉例來說,你可以用底下的指令來觀察到具有 SGID 權限的檔案喔:
[root@study ~]# ls -l /usr/bin/locate
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
|
與 SUID 不同的是,SGID 可以針對檔案或目錄來設定!如果是對檔案來說, SGID 有如下的功能:
- SGID 對二進位程式有用;
- 程式執行者對於該程式來說,需具備 x 的權限;
- 執行者在執行的過程中將會獲得該程式群組的支援!
舉例來說,上面的 /usr/bin/locate 這個程式可以去搜尋 /var/lib/mlocate/mlocate.db 這個檔案的內容 (詳細說明會在下節講述), mlocate.db 的權限如下:
[root@study ~]# ll /usr/bin/locate /var/lib/mlocate/mlocate.db
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
-rw-r-----. 1 root slocate 2349055 Jun 15 03:44 /var/lib/mlocate/mlocate.db
|
與 SUID 非常的類似,若我使用 dmtsai 這個帳號去執行 locate 時,那 dmtsai 將會取得 slocate 群組的支援, 因此就能夠去讀取 mlocate.db 啦!非常有趣吧!
除了 binary program 之外,事實上 SGID 也能夠用在目錄上,這也是非常常見的一種用途! 當一個目錄設定了 SGID 的權限後,他將具有如下的功能:
- 使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
- 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
- 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。
SGID 對於專案開發來說是非常重要的!^_^