關(guān)于Unix SUID/SGID知識概述
我們這次要來了解Unix SUID/SGID的知識。有時,沒有被授權(quán)的用戶需要完成某項(xiàng)任務(wù)。一個例子是passwd程序,它允許用戶改變口令,這就要求改變/etc/passwd文件的口令域。然而系統(tǒng)管理員決不允許普通用戶擁有直接改變這個文件的權(quán)利,因?yàn)檫@絕對不是一個好主意。
為了解決這個問題,Unix SUID/SGID便應(yīng)運(yùn)而生。Unix允許程序被授權(quán),當(dāng)程序被執(zhí)行的時候,擁有超級用戶的權(quán)限,完成時又回到普通用戶的權(quán)限。這個主意很好,所以AT&T對它申請了專利。
Unix下的一些名詞簡介
1.文件權(quán)限。確定用戶讀取、修改或執(zhí)行文件的權(quán)力。
r -- 讀訪問
w -- 寫訪問
x -- 執(zhí)行許可
s -- SUID/SGID
t -- sticky位
2.進(jìn)程。進(jìn)程是程序運(yùn)行一次的過程,以完成預(yù)定的任務(wù),它不同于程序。每個進(jìn)程都有一個唯一的進(jìn)程ID。此外,每個進(jìn)程還有一些其他標(biāo)識符:實(shí)際用戶ID、實(shí)際組ID、有效用戶ID、有效組ID。超級用戶進(jìn)程的實(shí)際用戶ID和有效用戶ID為0。
3.超級用戶root。超級用戶擁有系統(tǒng)的完全控制權(quán)。
Unix SUID/SGID的思路
SUID的程序在運(yùn)行時,將有效用戶ID改變?yōu)樵摮绦虻乃姓逫D,使得進(jìn)程在很大程度上擁有了該程序的所有者的特權(quán)。如果被設(shè)置為SUID root,那么這個進(jìn)程將擁有超級用戶的特權(quán)(當(dāng)然,一些較新版本的Unix系統(tǒng)加強(qiáng)了這一方面的安全檢測,一定程度上降低了安全隱患)。當(dāng)進(jìn)程結(jié)束時,又恢復(fù)為原來的狀態(tài)。
執(zhí)行時的Real Uid可以通過函數(shù)setuid()改變。Unix SUID/SGID我們就大概的了解了。
【編輯推薦】