訪問控制鏈表(ACL)
一個(gè)
ACL
是一個(gè)
ACE
鏈表。每個(gè)
ACL
中的
ACE
標(biāo)示一個(gè)托管以及指定允許的訪問權(quán)限、否定或托管的設(shè)計(jì)。一個(gè)對(duì)象的安全描述符號(hào)包含兩種類型的
ACL
,一個(gè)是
DACL
,一個(gè)是
SACL
。
一個(gè)目錄訪問控制鏈表(
DACL
)標(biāo)示允許或拒絕訪問一個(gè)安全對(duì)象的托管。當(dāng)一個(gè)進(jìn)程常識(shí)訪問一個(gè)安全對(duì)象的時(shí)候,系統(tǒng)檢查對(duì)象的
DACL
中的
ACE
來決定是否賦予訪問權(quán)限。如果對(duì)象沒有
DACL
,系統(tǒng)賦予完全的訪問權(quán)限,如果對(duì)象的
DACL
沒有
ACE
,那么系統(tǒng)拒絕所有訪問對(duì)象的嘗試,因?yàn)?/span>
DACL
不允許任何訪問權(quán)限。系統(tǒng)檢查
ACE
序列直到找到一到多個(gè)
ACE
,或者直到任何請(qǐng)求的訪問權(quán)限被否定。更多的信息參見:
DACL
怎么樣控制一個(gè)對(duì)象的。對(duì)于創(chuàng)建
DACL
的信息,見創(chuàng)建一個(gè)
DACL
。
一個(gè)系統(tǒng)訪問控制鏈表(
SACL
)是管理員登錄嘗試訪問一個(gè)安全對(duì)象。每個(gè)
ACE
指定一個(gè)指定的托管嘗試的訪問類型,這個(gè)訪問會(huì)導(dǎo)致系統(tǒng)產(chǎn)生一個(gè)安全事件日志。一個(gè)
SACL
中的
ACE
能夠產(chǎn)生訪問嘗試失敗或成功的時(shí)候產(chǎn)生評(píng)估記錄,在將來的
release
中,一個(gè)
SACL
在一個(gè)未授權(quán)用戶嘗試訪問一個(gè)對(duì)象的時(shí)候發(fā)出一個(gè)警告。更多
SACL
的信息參見
Audit Generation
和
SACL
訪問權(quán)限。
不要嘗試直接使用一個(gè)
ACL
來工作。為了確保
ACL
能夠語義正確的,使用適當(dāng)?shù)暮瘮?shù)來創(chuàng)建和操縱
ACL
。更多的信息參見:從
ACL
中取得信息和創(chuàng)建或修改一個(gè)
ACL
。
ACL
也提供訪問控制微軟的
Active Directory
目錄服務(wù)對(duì)象。活動(dòng)目錄服務(wù)接口(
ADSI
)包括創(chuàng)建和修改
ACL
內(nèi)容的程序。更多信息參見:控制訪問活動(dòng)目錄對(duì)象。
ACE
一個(gè)訪問控制實(shí)體(ACE)是ACL中的一個(gè)元素。一個(gè)ACL可能包含0到多個(gè)ACE。每個(gè)ACE通過一個(gè)指定的托管來控制或監(jiān)視一個(gè)對(duì)象。更多關(guān)于添加、刪除、改變ACE,見修改ACL對(duì)象。
Window Me/98/95:不支持訪問控制
有6種類型的ACE,三種被所有的安全對(duì)象支持,其他類型是對(duì)象特定的ACE,由目錄服務(wù)對(duì)象支持。
所有ACE類型都包含下面訪問控制信息:
1.? 一個(gè)安全標(biāo)示符號(hào)(SID)來標(biāo)示ACE應(yīng)用的托管
2.? 一個(gè)訪問掩碼指定ACE控制的訪問權(quán)限
3.? 一個(gè)指示ACE類型的標(biāo)志位
4.? 一系列位標(biāo)志決定是否子容器或?qū)ο罂梢岳^承ACE從基本對(duì)象到ACL附著的對(duì)象。
下表列出了三個(gè)所有安全對(duì)象支持的ACE類型:
Type | Description |
訪問拒絕ACE | 用在一個(gè)DACL中拒絕到一個(gè)托管的訪問權(quán)限 |
訪問允許ACE | 用在一個(gè)DACL中允許到托管的訪問權(quán)限 |
系統(tǒng)評(píng)估ACE | 用在SACL中,當(dāng)托管嘗試檢查指定訪問權(quán)限時(shí)產(chǎn)生一個(gè)評(píng)估記錄 |
對(duì)于對(duì)象指定的ACE,參見對(duì)象指定ACE。
注意,系統(tǒng)警告ACE對(duì)象現(xiàn)在不支持。
托管
一個(gè)托管是一個(gè)用戶帳戶、組帳戶或登錄會(huì)話到一個(gè)ACE應(yīng)用。每個(gè)ACL中的ACE都有一個(gè)SID來標(biāo)示托管。用戶帳戶包含人使用的帳戶或程序帳戶(例如,Window服務(wù)用來登錄到本地計(jì)算機(jī)的)。組帳戶不能用來登錄到計(jì)算機(jī),但在ACE中非常有用,用來拒絕或允許一到多個(gè)用戶帳戶的訪問權(quán)限。一個(gè)登錄SID表示當(dāng)前的登錄會(huì)話用來允許和拒絕訪問權(quán)限,直到用戶登出。
NT4.0和后來版本中訪問控制函數(shù)使用TRUSTEE結(jié)構(gòu)體來表示一個(gè)托管。這個(gè)結(jié)構(gòu)體能使你用一個(gè)字符串或一個(gè)SID來表示一個(gè)托管。如果你使用一個(gè)名字,從TRUSTEE結(jié)構(gòu)創(chuàng)建ACE的函數(shù)執(zhí)行SID緩沖區(qū)分配工作并且查詢SID對(duì)應(yīng)的帳戶名稱。有兩個(gè)助手函數(shù),BuildTrusteeWithSid和BuildTrusteeWithName,可以用SID或名字來初始化一個(gè)TRUSTEE結(jié)構(gòu)。BuildTrusteeWithObjectsAndSid和BuildTrusteeWithObjectsAndName允許你使用一個(gè)對(duì)象指定的ACE信息來初始化一個(gè)TRUSTEE結(jié)構(gòu)體。其他3個(gè)助手函數(shù),GetTrusteeFrorm、GetTrusteeName和GetTrusteeType,返回TRUSTEE結(jié)構(gòu)各成員的值。
Window XP/2000:TRUSTEE的ptstrName成員可以是一個(gè)指向OBJECTS_AND_NAME或OBJECTS_AND_SID結(jié)構(gòu)體的指針。這些結(jié)構(gòu)體說明對(duì)象指定ACE的信息,除了托管的名字和SID之外。這可以象SetEntriesInAcl和GetExplicitEntriesFromAcl這樣的函數(shù)存儲(chǔ)對(duì)象指定ACE的信息到EXPLICIT_ACCESS結(jié)構(gòu)體的Trustee成員中。
TRUSTEE結(jié)構(gòu)體:
typedef struct _TRUSTEE {
? PTRUSTEE pMultipleTrustee;
? MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
? TRUSTEE_FORM TrusteeForm;
? TRUSTEE_TYPE TrusteeType;
? LPTSTR ptstrName;
} TRUSTEE, *PTRUSTEE;
訪問權(quán)限和訪問掩碼
?
一個(gè)訪問權(quán)限是一個(gè)標(biāo)志位對(duì)應(yīng)到一個(gè)特殊操作集合,這個(gè)集合表示線程可以在安全對(duì)象上執(zhí)行的操作。例如:注冊(cè)表鍵KEY_SET_VALUE訪問權(quán)限,對(duì)應(yīng)到線程在這個(gè)鍵下設(shè)置的值的能力。如果線程想在一個(gè)對(duì)象執(zhí)行一個(gè)操作,但沒有必要的訪問權(quán)限,系統(tǒng)不執(zhí)行操作。
一個(gè)訪問掩碼是一個(gè)32位的值,它對(duì)應(yīng)到對(duì)象支持的訪問權(quán)限。所有的Windows NT/2000/XP 安全對(duì)象使用一個(gè)Windows訪問掩碼格式,這個(gè)格式包含下面的訪問權(quán)限位:
1.? 通用訪問權(quán)限
2.? 標(biāo)準(zhǔn)訪問權(quán)限
3.? SACL訪問權(quán)限
4.? 目錄服務(wù)訪問權(quán)限
當(dāng)一個(gè)線程想打開一個(gè)對(duì)象的句柄,線程通常指定一個(gè)訪問掩碼來請(qǐng)求一系列的訪問權(quán)限。例如,需要設(shè)置和查詢注冊(cè)表鍵的程序可以使用一個(gè)訪問掩碼來請(qǐng)求KEY_SET_VALUE和KEY_QUERY_VALUE訪問權(quán)限來打開該鍵。
下面表顯示了操作每種類型安全對(duì)象的信息:
對(duì)象類型 | 安全描述符號(hào)函數(shù) |
NTFS上的文件或目錄系統(tǒng) | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
命名管道和匿名管道 | GetSecurityInfo, SetSecurityInfo |
控制臺(tái)屏幕緩沖區(qū) | Not supported. |
進(jìn)程和線程 | GetSecurityInfo, SetSecurityInfo |
文件映射對(duì)象 | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
Access tokens | SetKernelObjectSecurity, GetKernelObjectSecurity |
Windows管理對(duì)象 (windows工作站和桌面) | GetSecurityInfo, SetSecurityInfo |
注冊(cè)表鍵 | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
Windows服務(wù) | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
本地和遠(yuǎn)程打印機(jī) | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
網(wǎng)絡(luò)共享 | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
進(jìn)程間同步對(duì)象 (事件, mutexes, semaphores, and waitable timers) | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
作業(yè)對(duì)象 | GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
?
通用訪問權(quán)限
安全對(duì)象使用Windows 訪問掩碼格式,四個(gè)高位說明通用訪問權(quán)限。每個(gè)安全對(duì)象類型映射到這些位到一系列標(biāo)準(zhǔn)和對(duì)象特殊訪問權(quán)限。例如:一個(gè)Window文件對(duì)象映射GENERIC_READ位到READ_CONTROL和SYNCHRONIZE 標(biāo)準(zhǔn)訪問權(quán)限和FILE_READ_DATA、FILE_READ_EA和FILE_READ_ATTRIBUTES對(duì)象指定訪問權(quán)限。其他類型對(duì)象映射GENERIC_READ位到與類型對(duì)象適應(yīng)的一些訪問權(quán)限。
你可以在你打開一個(gè)對(duì)象句柄的時(shí)候使用通用訪問權(quán)限來指定需要的訪問類型;這通常比指定所有對(duì)應(yīng)標(biāo)準(zhǔn)和特指權(quán)限要簡單。
下表顯示了通用訪問權(quán)限定義的常量。
常量 | 解釋 |
GENERIC_ALL | 讀、寫和執(zhí)行訪問 |
GENERIC_EXECUTE | 執(zhí)行 |
GENERIC_READ | 讀 |
GENERIC_WRITE | 寫 |
應(yīng)用程序定義的私有安全訪問對(duì)象能使用通用訪問權(quán)限。
安全描述符
安全描述符包含了安全對(duì)象相關(guān)的安全信息。安全描述父由一個(gè)SECURITY_DESCRIPTOR結(jié)構(gòu)體組成,它關(guān)聯(lián)到一個(gè)安全對(duì)象。一個(gè)安全描述符包含下面的安全信息:
1.? 擁有者或基本組對(duì)象的安全ID(SIDs)
2.? DACL指定特殊用戶或組的允許或拒絕的訪問權(quán)限
3.? SACL指定對(duì)象通用評(píng)估記錄嘗試的訪問類型
4.? 一個(gè)控制位集合,說明安全描述符的含義或它每個(gè)成員
程序不需要直接操作安全描述符的內(nèi)容。Windows API提供設(shè)置和返回安全描述符號(hào)的函數(shù)。另外,有用來創(chuàng)建和初始化一個(gè)新對(duì)象安全描述符號(hào)的函數(shù)。
?
Windows NT 3.51和更早的版本,Windows ME/98/95:參見:低級(jí)訪問控制。
?
工作在活動(dòng)目錄對(duì)象上安全描述符程序能使用Windows的安全函數(shù)或ADSI(活動(dòng)目錄服務(wù)接口)提供的安全接口。更多ADSI的信息參見:訪問控制如何在活動(dòng)目錄中工作?
DACL是怎么控制訪問對(duì)象的?
當(dāng)一個(gè)線程想訪問一個(gè)安全對(duì)象時(shí)候,系統(tǒng)要么允許訪問,要拒絕訪問。如果對(duì)象沒有DACL,系統(tǒng)賦予訪問權(quán)限,否則系統(tǒng)查找DACL中的該線程的ACE。每個(gè)對(duì)象DACL中的ACE指定托管的訪問允許或拒絕的訪問權(quán)限,它可以是一個(gè)用戶帳戶、組帳戶或登錄會(huì)話。
?
系統(tǒng)比較ACE中的托管和線程訪問標(biāo)記的托管標(biāo)示。一個(gè)訪問標(biāo)記包含SID來說明用戶和用戶輸入的組帳戶。一個(gè)標(biāo)記也包含一個(gè)登錄SID,來表示當(dāng)前的登錄會(huì)話。在訪問檢查期間,系統(tǒng)忽略不可用的組SID。更多可用不可用信息以及拒絕SID,見訪問標(biāo)記中的SID屬性。
通常,系統(tǒng)使用現(xiàn)成餓基本訪問標(biāo)記來請(qǐng)求訪問。然而,如果現(xiàn)成正在扮演其他用戶,系統(tǒng)使用現(xiàn)成的扮演標(biāo)記。
系統(tǒng)家產(chǎn)序列中的每個(gè)ACE,直到下面的情況發(fā)生:
1.? 一個(gè)顯式拒絕任何與線程訪問標(biāo)記中列出托管不同的訪問ACE出現(xiàn)
2.? 線程訪問標(biāo)記中列出的一個(gè)或多個(gè)允許訪問的ACE出現(xiàn),這個(gè)標(biāo)記顯式賦予所有權(quán)限。
3.? 所有的ACE都檢查過,并且至少一個(gè)訪問權(quán)限沒有顯式的允許,這種情況下暗示拒絕。
下圖描述一個(gè)DACL對(duì)象允許訪問一個(gè)線程而拒絕訪

問另一個(gè)線程。
對(duì)于線程A,系統(tǒng)讀ACE1并且立即拒絕訪問,因?yàn)樵L問拒絕ACE應(yīng)用到線程訪問標(biāo)記中的用戶。這種情況下,系統(tǒng)并沒有檢查ACE2和3。對(duì)于線程B,ACE1沒有應(yīng)用,因此系統(tǒng)處理ACE2,其允許寫操作,并且ACE3允許讀和執(zhí)行操作。
因?yàn)橄到y(tǒng)在請(qǐng)求訪問并顯式允許或拒絕的時(shí)候停止檢查,DACL中的ACE順序非常重要。注意,如果ACE順序與例子中的不同,系統(tǒng)可能分配訪問權(quán)限給A。對(duì)于系統(tǒng)對(duì)象,操作系統(tǒng)定義一個(gè)首選的DACL中ACE的順序。
創(chuàng)建一個(gè)DACL
創(chuàng)建適當(dāng)?shù)?/span>
DACL
是你程序開發(fā)中必要和重要的,因?yàn)橐粋€(gè)
NULL DACL
允許所有用戶所有訪問權(quán)限,不要使用
NULL DACL
。
下面例子演示了如何正常創(chuàng)建一個(gè)
DACL
。例子,包含一個(gè)函數(shù),
CreateMyDACL
,用安全描述符定義語言(
SDDL
)來定義那些賦予的和拒絕的
DACL
中的訪問控制。為了提供對(duì)你程序?qū)ο蟮牟煌L問,根據(jù)你的需要來修改
CreateMyDACL
。
在例子中:
1.??????
main
函數(shù)傳遞一個(gè)
SECURITY_ATTRIBUTES
結(jié)構(gòu)體的地址給
CreateMyDACL
函數(shù)
2.??????
CreateMyDACL
函數(shù)使用
SDDL
字符串來:
2???????
拒絕
guest
和匿名登錄用戶訪問
2???????
允許授權(quán)用戶的讀
/
寫
/
執(zhí)行訪問
2???????
允許管理員所有控制
3.??????
更多的
SDDL
字符串格式
4.??????
CreateMyDACL
函數(shù)調(diào)用
ConvertStringSecurityDescriptorToSecurityDescriptor
函數(shù)轉(zhuǎn)換
SDDL
字符串為一個(gè)安全描述符。安全描述符號(hào)通過
SECURITY_ATTRIBUTES
結(jié)構(gòu)體的
lpSecurityDescriptor
成員來指定。
CreateMyDACL
發(fā)送
ConvertStringSecurityDescriptorToSecurityDescriptor
的返回值給
main
函數(shù)。
5.??????
main
函數(shù)完成使用
SECURITY_ATTRIBUTES
結(jié)構(gòu)體時(shí),
main
函數(shù)釋放
lpSecurityDescriptor
成員的內(nèi)存,調(diào)用
LocalFree
函數(shù)來完成。
注意,成功編譯
SDDL
函數(shù),例如:
ConvertStringSecurityDescriptorToSecurityDescriptor,
你必須定義
_WIN32_WINNT
常量為
0x0500
或更大。
SDDL
在
Windows 2003
家族
,Windows XP
和
2000
操作系統(tǒng)上可用。


?1
#define?_WIN32_WINNT?0x0500
?2
?3
#include?<windows.h>
?4
#include?<sddl.h>
?5
#include?<stdio.h>
?6
?7
BOOL?CreateMyDACL(SECURITY_ATTRIBUTES?*);
?8
?9
void?main()
10

{
11
?????SECURITY_ATTRIBUTES??sa;
12
?????sa.nLength?=?sizeof(SECURITY_ATTRIBUTES);
13
?????sa.bInheritHandle?=?FALSE;??
14
?????//?Call?function?to?set?the?DACL.?The?DACL
15
?????//?is?set?in?the?SECURITY_ATTRIBUTES?
16
?????//?lpSecurityDescriptor?member.
17
?????if?(!CreateMyDACL(&sa))
18
?????
{
19
?????????//?Error?encountered;?generate?message?and?exit.
20
?????????printf("Failed?CreateMyDACL\n");
21
?????????exit(1);
22
?????}
23
24
?????//?Use?the?updated?SECURITY_ATTRIBUTES?to?specify
25
?????//?security?attributes?for?securable?objects.
26
?????//?This?example?uses?security?attributes?during
27
?????//?creation?of?a?new?directory.
28
?????if?(0?==?CreateDirectory(TEXT("C:\\MyFolder"),?&sa))
29
?????
{
30
?????????//?Error?encountered;?generate?message?and?exit.
31
?????????printf("Failed?CreateDirectory\n");
32
?????????exit(1);
33
?????}
34
35
?????//?Free?the?memory?allocated?for?the?SECURITY_DESCRIPTOR.
36
?????if?(NULL?!=?LocalFree(sa.lpSecurityDescriptor))
37
?????
{
38
?????????//?Error?encountered;?generate?message?and?exit.
39
?????????printf("Failed?LocalFree\n");
40
?????????exit(1);
41
?????}
42
}
43
44
45
//?CreateMyDACL.
46
//????Create?a?security?descriptor?that?contains?the?DACL?you?want.
47
//????This?function?uses?SDDL?to?make?Deny?and?Allow?ACEs.
48
//
49
//?Parameter:
50
//????SECURITY_ATTRIBUTES?*?pSA
51
//????Pointer?to?a?SECURITY_ATTRIBUTES?structure.?It?is?the?caller's
52
//????responsibility?to?properly?initialize?the?structure?and?to?free?
53
//????the?structure's?lpSecurityDescriptor?member?when?the?caller?has
54
//????finished?using?it.?To?free?the?structure's?lpSecurityDescriptor?
55
//????member,?call?the?LocalFree?function.
56
//?
57
//?Return?value:
58
//????FALSE?if?the?address?to?the?structure?is?NULL.?
59
//????Otherwise,?this?function?returns?the?value?from?the
60
//????ConvertStringSecurityDescriptorToSecurityDescriptor?function.
61
BOOL?CreateMyDACL(SECURITY_ATTRIBUTES?*?pSA)
62

{
63
?????//?Define?the?SDDL?for?the?DACL.?This?example?sets?
64
?????//?the?following?access:
65
?????//?????Built-in?guests?are?denied?all?access.
66
?????//?????Anonymous?logon?is?denied?all?access.
67
?????//?????Authenticated?users?are?allowed?read/write/execute?access.
68
?????//?????Administrators?are?allowed?full?control.
69
?????//?Modify?these?values?as?needed?to?generate?the?proper
70
?????//?DACL?for?your?application.?
71
?????TCHAR?*?szSD?=?TEXT("D:")???????//?Discretionary?ACL
72
????????TEXT("(D;OICI;GA;;;BG)")?????//?Deny?access?to?built-in?guests
73
????????TEXT("(D;OICI;GA;;;AN)")?????//?Deny?access?to?anonymous?logon
74
????????TEXT("(A;OICI;GRGWGX;;;AU)")?//?Allow?read/write/execute?to?authenticated?users
75
????????TEXT("(A;OICI;GA;;;BA)");????//?Allow?full?control?to?administrators
76
77
????if?(NULL?==?pSA)
78
????????return?FALSE;
79
?????return?ConvertStringSecurityDescriptorToSecurityDescriptor(
80
????????????????szSD,
81
????????????????SDDL_REVISION_1,
82
????????????????&(pSA->lpSecurityDescriptor),
83
????????????????NULL);
84
}
85
可保安全對(duì)象
一個(gè)安全對(duì)象有一個(gè)安全描述符。所有有名字的
Windows
對(duì)象都是安全的。有些沒有名字的對(duì)象,例如:進(jìn)程和線程對(duì)象也有安全描述符。對(duì)于大多數(shù)安全對(duì)象來說,你可以在創(chuàng)建對(duì)象的時(shí)候指定一個(gè)對(duì)象的安全描述符。例如:你能在
CreateFile
和
CreateProcess
函數(shù)中指定安全描述符。
另外,
Windows
安全函數(shù)是你能夠?yàn)椴僮飨到y(tǒng)創(chuàng)建的而不是
Windows
創(chuàng)建的安全對(duì)象得到和設(shè)置安全信息。
Windows
安全函數(shù)也提供支持私有使用安全描述符和程序定義對(duì)象。更多關(guān)于私有安全對(duì)象信息參見客戶服務(wù)器訪問控制。
?
每個(gè)安全對(duì)象定義它自己的一系列訪問權(quán)限,并且它擁有的映射通用訪問權(quán)限。更多關(guān)于指定和通用訪問權(quán)限的信息,參見對(duì)象類型總覽。
下表顯示了函數(shù)來操作通用安全對(duì)象的安全信息:
對(duì)象類型
|
安全描述符函數(shù)
|
NTFS文件系統(tǒng)的文件和目錄
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Named pipes
Anonymous pipes
|
GetSecurityInfo
, SetSecurityInfo
|
Processes
Threads
|
GetSecurityInfo
, SetSecurityInfo
|
File-mapping objects
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Access tokens
|
SetKernelObjectSecurity
, GetKernelObjectSecurity
|
Window-management objects ( window stations and desktops)
|
GetSecurityInfo
, SetSecurityInfo
|
Registry keys
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Windows services
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Local or remote printers
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Network shares
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Interprocess synchronization objects (events, mutexes, semaphores, and waitable timers)
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Job objects
|
GetNamedSecurityInfo
, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo
|
Directory service objects
|
These objects are handled by Active Directory Objects. See Active Directory Service Interfaces.
|
?
登錄會(huì)話
一個(gè)登錄繪畫從用戶登錄到計(jì)算機(jī)時(shí)候開始。所有登錄會(huì)話中的進(jìn)程有相同的基本訪問標(biāo)記。訪問標(biāo)記包含登錄會(huì)話相關(guān)的安全上下文,包含用戶的
SID
和登錄標(biāo)示以及登錄
SID
。
?
登錄
SID
?
一個(gè)安全標(biāo)示符(
SID
)用來表示登錄會(huì)話。你可以使用
DACL
中的登錄
SID
來在登錄會(huì)話過程中控制訪問。登錄
SID
只有在用戶登出的時(shí)候無效。登錄
SID
是計(jì)算機(jī)運(yùn)行的時(shí)候唯一的。沒有其他會(huì)話有系統(tǒng)的
SID
。然而,可能的登錄
SID
集合在計(jì)算機(jī)啟動(dòng)的時(shí)候被復(fù)位。為了從訪問標(biāo)記中返回登錄
SID
,為
TokenGroups
調(diào)用
GetTokenInformation
函數(shù)。
?
訪問標(biāo)記
?
一個(gè)訪問標(biāo)記包含登錄會(huì)話的安全信息。系統(tǒng)在用戶登錄的時(shí)候創(chuàng)建一個(gè)安全標(biāo)記,每個(gè)進(jìn)程執(zhí)行用戶由于的標(biāo)記副本。標(biāo)記表示用戶、用戶組和用戶權(quán)限。系統(tǒng)使用標(biāo)記來控制訪問安全對(duì)象和控制用戶在本地計(jì)算機(jī)上執(zhí)行各種系統(tǒng)相關(guān)操作。兩種訪問標(biāo)記:私有的和偽裝的。
?
偽裝標(biāo)記:
?
一個(gè)被創(chuàng)建來捕獲客戶進(jìn)程安全信息、允許服務(wù)器在安全操作中偽裝客戶進(jìn)程的訪問標(biāo)記。
?
主標(biāo)記:
一個(gè)
Windows
內(nèi)核創(chuàng)建的標(biāo)記。可能分配給一個(gè)進(jìn)程來表示默認(rèn)的進(jìn)程安全信息。