工作物件安全性和存取權限

Microsoft Windows 安全性模型可讓您控制工作物件的存取權。 如需安全性的詳細資訊,請參閱 存取控制模型

呼叫CreateJobObject函式時,您可以指定工作物件的安全性描述項。 如果您指定 Null,工作物件會取得預設的安全性描述元。 工作物件的預設安全性描述元中的 ACL 來自建立者的主要或模擬權杖。

若要取得或設定工作物件的安全性描述元,請呼叫GetNamedSecurityInfoSetNamedSecurityInfoGetSecurityInfo 或 SetSecurityInfo式。

工作物件的有效存取權限包括 標準存取權限 和某些作業特定的存取權限。 下表列出所有物件所使用的標準存取權限。

意義
DELETE (0x00010000L) 刪除物件的必要專案。
READ_CONTROL (0x00020000L) 需要讀取物件之安全描述元中的資訊,不包括 SACL 中的資訊。 若要讀取或寫入 SACL,您必須要求 ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 SACL 存取權限
SYNCHRONIZE (0x00100000L) 使用同步物件的權限。 這可讓執行緒等到物件處於訊號狀態為止。
WRITE_DAC (0x00040000L) 需要修改 物件之安全描述元中的 DACL。
WRITE_OWNER (0x00080000L) 變更物件之安全描述元中擁有者的必要專案。

 

下表列出作業特定的存取權限。

意義
JOB_OBJECT_ALL_ACCESS (0x1F001F) 結合所有有效的工作物件存取權限。
JOB_OBJECT_ASSIGN_PROCESS (0x0001) 需要呼叫 AssignProcessToJobObject 函式,才能將進程指派給工作物件。
JOB_OBJECT_QUERY (0x0004) 需要擷取工作物件的特定資訊,例如屬性和會計資訊 (請參閱 QueryInformationJobObjectIsProcessInJob) 。
JOB_OBJECT_SET_ATTRIBUTES (0x0002) 需要呼叫 SetInformationJobObject 函式,才能設定工作物件的屬性。
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) 不支援此旗標。 您必須針對與工作物件相關聯的每個進程個別設定安全性限制。Windows Server 2003 和 Windows XP:必須使用JobObjectSecurityLimitInformation資訊類別呼叫SetInformationJobObject函式,才能為與工作物件相關聯的進程設定安全性限制。 Windows Vista 和 Windows Server 2008 已移除此旗標的支援。
JOB_OBJECT_TERMINATE (0x0008) 呼叫 TerminateJobObject 函式以終止工作物件中的所有進程的必要專案。

 

CreateJobObject所傳回的控制碼具有工作物件的JOB_OBJECT_ALL_ACCESS存取權。 當您呼叫 OpenJobObject 函式時,系統會根據物件的安全性描述項檢查所要求的存取權限。 如果工作物件位於 巢狀作業的階層中,具有工作物件存取權的呼叫端會隱含地存取階層中的所有子作業。

如果您想要讀取或寫入物件的 SACL,您可以要求 工作物件的ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 存取控制清單 (ACL) SACL 存取權限

您必須針對與工作物件相關聯的每個進程個別設定安全性限制,而不是針對工作物件本身設定這些限制。 如需詳細資訊,請參閱 處理安全性和存取權限

Windows Server 2003 和 Windows XP: 您可以使用 SetInformationJobObject 函式來設定工作物件的安全性限制。 Windows Vista 和 Windows Server 2008 已移除此功能。