UNIX檔案的SUID/SGID(轉)

BSDLite發表於2007-08-11
UNIX檔案的SUID/SGID(轉)[@more@]  一、 SUID/SGID概述

  有時,沒有被授權的使用者需要完成某項任務。一個例子是passwd程式,它允許使用者改變口令,這就要求改變/etc/passwd檔案的口令域。然而系統管理員決不允許普通使用者擁有直接改變這個檔案的權利,因為這絕對不是一個好主意。
  為了解決這個問題,SUID/SGID便應運而生。UNIX允許程式被授權,當程式被執行的時候,擁有超級使用者的許可權,完成時又回到普通使用者的許可權。這個主意很好,所以AT&T對它申請了專利。
  
  二、 UNIX下的一些名詞簡介

  1.檔案許可權。確定使用者讀取、修改或執行檔案的權力。
  r -- 讀訪問
  w -- 寫訪問
  x -- 執行許可
  s -- SUID/SGID
  t -- sticky位
  2.程式。程式是程式執行一次的過程,以完成預定的任務,它不同於程式。每個程式都有一個唯一的程式ID。此外,每個程式還有一些其他識別符號:實際使用者ID、實際組ID、有效使用者ID、有效組ID。超級使用者程式的實際使用者ID和有效使用者ID為0。
  3.超級使用者root。超級使用者擁有系統的完全控制權。
  
  三、 SUID/SGID的思路

  SUID的程式在執行時,將有效使用者ID改變為該程式的所有者ID,使得程式在很大程度上擁有了該程式的所有者的特權。如果被設定為SUID root,那麼這個程式將擁有超級使用者的特權(當然,一些較新版本的UNIX系統加強了這一方面的安全檢測,一定程度上降低了安全隱患)。當程式結束時,又恢復為原來的狀態。
  
  執行時的Real Uid可以透過函式setuid()改變
  
  四、一個SUID程式

  下面的程式是用來演示UNIX檔案的SUID,取名為parent.c
  
  
QUOTE:

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

UNIX檔案的SUID/SGID(轉)
請登入後發表評論 登入
全部評論

相關文章