2 一般使用者利用 UNIX setuid()函式來設定一個執行檔,下列敘述何者正確?
(A)暫時性地把執行檔呼叫行程的 effective uid 換成執行檔擁有者的 uid
(B)永久性地把執行檔呼叫行程的 effective uid 換成執行檔擁有者的 uid
(C)暫時性地把執行檔呼叫行程的 real uid 換成執行檔擁有者的 uid
(D)永久性地把執行檔呼叫行程的 real uid 換成執行檔擁有者的 uid
統計: A(267), B(133), C(189), D(51), E(0) #798367
詳解 (共 3 筆)
有效使用者ID(Effective UID,即EUID)與有效使用者組ID(Effective Group ID,即EGID)在建立與存取檔案的時候發揮作用;具體來說,建立檔案時,系統內核將根據建立檔案的行程的EUID與EGID設定檔案的所有者/組屬性,而在存取檔案時,內核亦根據存取行程的EUID與EGID決定其能否存取檔案。
真實使用者ID[編輯]真實使用者ID(Real UID,即RUID)與真實使用者組ID(Real GID,即RGID)用於辨識行程的真正所有者,且會影響到行程傳送訊號的權限。沒有超級使用者權限的行程僅在其RUID與目標行程的RUID相符合時才能向目標行程傳送訊號,例如在父子行程間,子行程從父行程處繼承了認證資訊,使得父子行程間可以互相傳送訊號。
暫存使用者ID[編輯]暫存使用者ID(Saved UID,即SUID)於以提升權限執行的行程暫時需要做一些不需特權(英語:Privilege (computing))的操作時使用,這種情況下行程會暫時將自己的有效使用者ID從特權使用者(常為root)對應的UID變為某個非特權使用者對應的UID,而後將原有的特權使用者UID複製為SUID暫存;之後當行程完成不需特權的操作後,行程使用SUID的值重設EUID以重新獲得特權。在這裡需要說明的是,無特權行程的EUID值只能設為與RUID、SUID與EUID(也即不改變)之一相同的值。
檔案系統使用者ID[編輯]檔案系統使用者ID(File System UID,即FSUID)在Linux中使用,且只用於對檔案系統的存取權限控制,在沒有明確設定的情況下與EUID相同(若FSUID為root的UID,則SUID、RUID與EUID必至少有一亦為root的UID),且EUID改變也會影響到FSUID。設立FSUID是為了允許程式(如NFS伺服器)在不需取得向給定UID帳戶傳送訊號的情況下以給定UID的權限來限定自己的檔案系統權限。
setuid 函式主要功能為,
設定該檔案的"有效用戶"在操作的其間,
具有該檔案的操作權限,
因只有在操作期間所以稱為 "暫時性"