-
安全描述符
鎖定
安全描述符簡介
安全描述符包含自主決定的訪問控制表(DACL),裏面包含有訪問控制項(ACE),因此可以允許或拒絕特定用户或用户組的訪問。它們還包含一個系統訪問控制列表(SACL)以控制對象訪問請求的日誌(logging)。ACE可以顯式應用於對象,或者從父對象繼承。ACE的順序在ACL中很重要,拒絕訪問的ACE應該比允許訪問的ACE更早出現。安全描述符還包含對象所有者。
安全描述符字符串格式
安全描述符字符串是一種用來存儲或傳輸安全描述符中的信息的文本格式,應用到SACL的安全描述符控制標記,sacl_flags使用和dacl_flags字符串相同的控制位字符串。描述安全描述符的DACL或SACL包含的一個ACE項的字符串。安全描述符字符串中可以省略不需要的部分,譬如,如果輸入安全描述符中未設置SE_DACL_PRESENT標記,ConvertSecurityDescriptorToStringSecurityDescriptor的輸出字符串中將不包含D:部分。安全描述符字符串不支持NULL ACLs。為表示一個空ACL,安全描述符字符串中包含S:或D:標記而不含其他字符串信息。
[1]
安全描述符應用
文件和文件夾的權限可以使用各種工具編輯,這包括Windows Explorer、WMI,以及命令行工具如Cacls、XCacls、ICacls、SubInACL,免費的Win32控制枱FILEACL,自由實用工具SetACL,以及其他實用工具。要編輯一個安全描述符,用户需要有該對象的WRITE_DAC訪問權限,該權限通常默認授予管理員和該對象的所有者。
[2]
安全描述符數據結構
typedef struct _SECURITY_DESCRIPTOR { UCHAR Revision; UCHAR Sbz1; SECURITY_DESCRIPTOR_CONTROL Control; //其自身的一些控制位 PSID Owner; //Owner安全標識符(Security identifiers) 相當於UUID,標識用户、用户羣、計算機帳户 PSID Group; //Group安全標識符(Security identifiers) 相當於UUID PACL Sacl; //(System Access Control List),其指出了在該對象上的一組存取方式(如,讀、寫、運行等)的存取控制權限細節的列表。 PACL Dacl; //(Discretionary Access Control List),其指出了允許和拒絕某用户或用户組的存取控制列表。 如果一個對象沒有DACL,那麼就是説這個對象是任何人都可以擁有完全的訪問權限。 } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;typedef struct _ACL { BYTE AclRevision; BYTE Sbz1; WORD AclSize; WORD AceCount; WORD Sbz2;} ACL, *PACL;
獲取對象上的安全設置,或修改對象上的安全設置的Windows API。如:GetNamedSecurityInfo, SetNamedSecurityInfo,GetSecurityInfo, SetSecurityInfo。
底層安全描述符函數: