作業物件安全性和訪問許可權
Microsoft Windows 安全性模型可讓您控制作業物件的存取。 如需安全性的詳細資訊,請參閱 Access-Control 模型。
當您呼叫 CreateJobObject 函式時,您可以為作業物件指定 安全性描述元。 如果您指定 NULL,作業物件會取得預設的安全性描述元。 作業物件之預設安全性描述元中的 ACL 來自建立者的主要或模擬令牌。
若要取得或設定作業對象的安全性描述元,請呼叫 getNamedSecurityInfo、SetNamedSecurityInfo、GetSecurityInfo或 SetSecurityInfo 函式。
作業物件的有效訪問許可權包括 標準訪問許可權 和某些作業特定的訪問許可權。 下表列出所有物件所使用的標準訪問許可權。
價值 | 意義 |
---|---|
DELETE (0x00010000L) | 需要刪除物件。 |
READ_CONTROL (0x00020000L) | 需要讀取 物件之安全描述元中的資訊,不包括 SACL 中的資訊。 若要讀取或寫入 SACL,您必須要求 ACCESS_SYSTEM_SECURITY 訪問許可權。 如需詳細資訊,請參閱 SACL 存取權。 |
SYNCHRONIZE (0x001000000L) | 使用物件進行同步處理的權利。 這可讓線程等候對象處於訊號狀態。 |
WRITE_DAC (0x00040000L) | 在對象的安全性描述元中修改 DACL 的必要專案。 |
WRITE_OWNER (0x00080000L) | 需要變更 物件之安全性描述元中的擁有者。 |
下表列出作業特定的訪問許可權。
價值 | 意義 |
---|---|
JOB_OBJECT_ALL_ACCESS (0x1F001F) | 結合所有有效的作業物件訪問許可權。 |
JOB_OBJECT_ASSIGN_PROCESS (0x0001) | 呼叫 AssignProcessToJobObject 函式以將進程指派給作業物件的必要專案。 |
JOB_OBJECT_QUERY (0x0004) | 需要擷取作業物件的特定資訊,例如屬性和會計資訊(請參閱 QueryInformationJobObject 和 IsProcessInJob)。 |
JOB_OBJECT_SET_ATTRIBUTES (0x0002) | 需要呼叫 setInformationJobObject函式SetInformationJobObject,才能設定作業對象的屬性。 |
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) | 不支援此旗標。 您必須針對與作業對象相關聯的每個進程個別設定安全性限制。Windows Server 2003 和 Windows XP: 呼叫 SetInformationJobObject 函式與 JobObjectSecurityLimitInformation 資訊類別,以設定與作業對象相關聯之進程的安全性限制。 Windows Vista 和 Windows Server 2008 已移除此旗標的支援。 |
JOB_OBJECT_TERMINATE (0x0008) | 呼叫 TerminateJobObject 函式以終止作業物件中的所有進程的必要專案。 |
createJobObject所傳回的句柄具有作業物件的 JOB_OBJECT_ALL_ACCESS 存取權。 當您呼叫 OpenJobObject 函式時,系統會根據對象的安全性描述元檢查所要求的訪問許可權。 如果作業對象位於 巢狀作業階層中,則具有作業物件存取權的呼叫端會隱含地存取階層中的所有子作業。
如果您想要讀取或寫入物件的 SACL,您可以要求作業物件的 ACCESS_SYSTEM_SECURITY 存取權限。 如需詳細資訊,請參閱 Access-Control 清單 (ACL) 和 SACL 存取權。
您必須針對與作業對象相關聯的每個進程個別設定安全性限制,而不是針對作業物件本身設定它們。 如需詳細資訊,請參閱 處理安全性和存取權限。
Windows Server 2003 和 Windows XP: 您可以使用 SetInformationJobObject 函式來設定作業物件的安全性限制。 這項功能已在 Windows Vista 和 Windows Server 2008 中移除。