1. 程式人生 > >linux中的setGID許可權

linux中的setGID許可權

1、setGID對檔案的作用

  • 只有可執行的二進位制程式才能設定setGID許可權
  • 命令執行者要對該程式擁有x(執行)許可權
  • 命令執行在執行程式的時候,組身份升級為該程式檔案的屬組
  • setUID許可權同樣只在該程式執行過程中有效,也就是說組身份改變只在程式執行過程中有效

例項:系統中的locate命令就是一個具有setGID許可權的檔案,locate命令實際搜尋的是/var/lib/mlocate/mlocate.db檔案中的內容,但如下圖所示,該檔案其實預設對其他使用者是沒有許可權的,但為什麼其他使用者能夠使用locate命令來搜尋呢,原因就在於使用者在執行locate命令期間,組身份會升級為slocate組身份,而slocate組對mlocate.db有讀許可權,所以普通使用者可以使用locate命令來檢視mlocate.db資料庫

2、setGID許可權對目錄的作用

  • 普通使用者必須對此目錄擁有r和x許可權,才能進入此目錄
  • 普通使用者在此目錄中的有效組會變成此目錄的屬組
  • 若普通使用者對此目錄擁有w許可權時,新建的檔案的預設屬組是這個目錄的屬組

例項:

首先用root使用者在/tmp目錄下建立test目錄,然後給test目錄777許可權,使得普通使用者能夠進入此目錄並且建立檔案,然後切換為普通使用者(fz),在test目錄下建立cangls檔案,結果如下:(此時的cangls檔案的所屬組預設為fz)

\

然後返回root使用者,給test目錄賦予setGID許可權2777,然後切換回普通使用者(fz),使用普通使用者在test目錄下建立bols檔案,結果如下:(可見此時建立的bols檔案的組身份繼承了上級目錄test的組身份root)

同setUID許可權一樣,setGID許可權不建議使用者自己設定,只要瞭解下就好了,因為使用者自己設定這種許可權對於系統來說是很危險的。