2009年11月3日

SUID, SGID, SBIT

set uid是為了特殊狀況設計出來的,比方說使用passwd這個程式修改密碼的時候
鳥哥簡單列出set uid的四個特色
  • SUID 權限僅對二進位程式(binary program)有效;
  • 執行者對於該程式需要具有 x 的可執行權限;
  • 本權限僅在執行該程式的過程中有效 (run-time);
  • 執行者將具有該程式擁有者 (owner) 的權限。

以其中的例子來說,一般人修改自己的密碼需要修改/etc/password這個檔案,可是一般的使用者並沒有權限修改這檔案
當root所有的檔案權限為rwxr_xr_x的時候,一般人可以執行,可是執行程式的權限全都是個人權限,也就是說當這個程式想要讀取某個檔案的時候,會先檢視該執行人是否有權讀取
當一個程式有set uid就表示,這個程式執行期間,不再以執行的使用者來看待,反而是以owner的權限來看待
所以passwd這程式權限rwsr_xr_x

有set uid,同樣就有set gid,有這權限的程式的特色為
  • SGID 對二進位程式有用;
  • 程式執行者對於該程式來說,需具備 x 的權限;
  • 執行者在執行的過程中將會獲得該程式群組的支援!
  • 使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
  • 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
  • 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。

stick bit則是另外一種特色
  • 當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
  • 當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案

設定的代號為
  • 4 為 SUID
  • 2 為 SGID
  • 1 為 SBIT

要設定SUID
chmod 4755 => rwsr_xr_x
chmod 6755 => rwsr_sr_x
chmod 1755 => rwxr_xr_t
chmod 7666=> rwSrwSrwT
最後一個要特別注意的是,明明連owner都沒有權限了,怎麼會把這權限授予其他人呢?所以旗標為特別的符號

沒有留言: