SUID 與 SGID - 使普通使用者可以完成特定使用者許可權才能完成的任務

tolywang發表於2014-06-09

 AIX 6.1 ,  Linux 6 

      使用 ls -l 命令檢視檔案的訪問許可權,通常都是 r w x , 但有時會發現有些檔案的執行許可權位不是 "x" 而是 "s". 如:

-rwsr-s--x   1  oracle    dba        25942  Jun  8 11:48  oracle

這說明 oracle 檔案被設定了SUID (Set User ID) ,  SUID 表示"設定使用者ID",SGID (Set Group ID) 表示"設定組ID"。當使用者執行一個設定了SUID檔案時,使用者ID在程式執行過程中被置為檔案擁有者的使用者ID。如果檔案屬主是 root,當使用者在程式的執行過程中就成為 root 使用者,有著與 root 同樣的許可權。 比如以oracle使用者登入執行owner為grid的檔案,如果這個檔案設定了SUID,  那麼oracle使用者在執行這個檔案時就擁有了grid使用者相當的許可權 。    同樣,當一個使用者執行設定了SGID檔案時, 使用者的屬組在程式執行過程中被置為檔案的屬組。

 
修改方法:     
$ chmod 4xxx filename 為檔案設定 SUID ( x 是 0 ~ 7 的一位數字)    -- 使用者位置的 x 會變成 s
        等價於   chmod   u+s   filename
$ chmod 2xxx filename 為檔案設定 SGID            -- 所屬組位置的 x 會變成 s
       等價於  chmod g+s  filename
$ chmod 6xxx filename 為檔案設定 SUID 和 SGID      -- 所屬使用者和組位置的 x 會變成 s
       等價於  chmomd ug+s  filename

這樣設定的目的有時候是為了方便使用者操作, 比如將某執行檔案的屬主改為 root 並設定 SUID, 這樣當系統管理員不在的情況下,一般使用者也可以處理一些常見的系統問題。 當然這樣設定也會帶來一些安全隱患。  使用者若無特殊需求,不應該啟用這些許可權,避免安全方面出現嚴重漏洞,造成駭客入侵 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1179194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章