访问掩码中的“标准访问权限”和“对象特定访问权限”的访问规则是什么

访问掩码中的“标准访问权限”和“对象特定访问权限”的访问规则是什么

我用了对象管理器获取命名管道的权限\\.\pipe\InitShutdown


PS C:\WINDOWS\system32> $a = Get-NtFile("\Device\NamedPipe\InitShutdown")
PS C:\WINDOWS\system32> $a.SecurityDescriptor.Dacl

Type    User                         Flags Mask
----    ----                         ----- ----
Allowed Everyone                     None  0012019B
Allowed NT AUTHORITY\ANONYMOUS LOGON None  0012019B
Allowed BUILTIN\Administrators       None  001F01FF

PS C:\WINDOWS\system32> $a.SecurityDescriptor.Dacl[0].Mask | fl


IsEmpty           : False
HasAccess         : True
HasGenericAccess  : False
HasSpecificAccess : True
Access            : 1180059

命名管道1180059对每个人都有访问掩码。
下面是MSDN 访问掩码格式指南
在此处输入图片描述

转换1180059为二进制:

00000000 00010010 00000001 10011011

位 0、1、3、4、7、8、17、20 已启用,但没有描述“标准访问权限”或“对象特定访问权限”的具体权限。
使用 ProcessHacker 我们可以看到确切的权限:
在此处输入图片描述

有没有关于“标准访问权限”和“特定对象访问权限”含义的文档?

我尝试寻找答案“访问控制列表Acl”“.NET 中未包含权限”

我发现文档关于“标准访问权限”,但它只显示五条规则,而图片显示它有 8 位标志:

DELETE
READ_CONTROL
SYNCHRONIZE
WRITE_DAC
WRITE_OWNER

答案1

访问掩码 格式为:

权利
位 0 - 15 [16 位]: 特定对象的权利
位 16 - 23 [ 8 位]: 标准访问权限
位 24: [ 1 位]: 访问 SACL 的权限(ACCESS_SYSTEM_SECURITY)
位 25 - 27 [ 3 位]: 预订的
位 28 - 31 [ 4 位]: 通用访问权限

通用访问权限高四位分别指定一组标准和对象特定的访问权限。它们可以称为“宏”,其中每个位都映射到一组标准和对象特定的权限,具体取决于对象类型。

例如,对于文件和文件夹, 映射是 :

访问权 描述
FILE_GENERIC_EXECUTE 文件执行、文件读取属性、标准权限执行、同步
文件_通用_读取 文件读取属性、文件读取数据、文件读取EA、标准权限读取、同步
文件_通用_写入 文件附加数据、文件写入属性、文件写入数据、文件写入EA、标准权限写入、同步

但映射会有所不同 流程安全和访问权限

标准访问权限 之所以被称为标准,是因为它们几乎适用于所有对象类型。它们是(如您所发现的):DELETE、READ_CONTROL、SYNCHRONIZE、WRITE_DAC、WRITE_OWNER。

特定对象的权利正如其名称所示,它们是特定的,并且仅在其对象类型的上下文中被理解。

如果我们看一下对象类型的过程,我们有 流程安全和访问权限 具有进程的独特权限,例如 PROCESS_SUSPEND_RESUME。

获取 Windows 中所有对象类型的权限列表是一项艰巨的任务,而且我不确定微软的文档是否足够详细。

答案2

我进入了我创建的简单文件的权限,每次添加\删除一个高级权限,然后我从运行以下命令对象管理器

PS C:\tmp\permissions> $a.Dispose()
PS C:\tmp\permissions> $a = get-ntfile("a.txt")
PS C:\tmp\permissions> $a.SecurityDescriptor.Dacl

Type    User                             Flags     Mask
----    ----                             -----     ----
Allowed Everyone                         None      00140000

通过这种方式,我能够映射每个单独权限的掩码,这可能不会准确显示每一位是什么,但可以提供一个很好的理解:

Read:                          00000000 00010010 00000000 10001001 : 00120089
Read & Execute:                00000000 00010010 00000000 10101001 : 001200A9                          
Write:                         00000000 00010000 00000001 00010110 : 00100116                          
Read & Write                   00000000 00010010 00000001 10011111 : 0012019F                          
Read & Write & Execute         00000000 00010010 00000001 10111111 : 001201BF                          
Modify                         00000000 00010011 00000001 10111111 : 001301BF
Full                           00000000 00011111 00000001 11111111 : 001F01FF
  
All advanced permissions separated: 
List folder / Read data        00000000 00010000 00000000 00000001 : 00100001
Read Attribute                 00000000 00010000 00000000 10000000 : 00100080
Read Extended Attributes       00000000 00010000 00000000 00001000 : 00100008
Read permissions               00000000 00010010 00000000 00000000 : 00120000
Traverse folder / execute      00000000 00010000 00000000 00100000 : 00100020
Create files / write data      00000000 00010000 00000000 00000010 : 00100002
Create folders / append data   00000000 00010000 00000000 00000100 : 00100004
Write attributes               00000000 00010000 00000001 00000000 : 00100100
Write Extended attributes      00000000 00010000 00000000 00010000 : 00100010
Delete                         00000000 00010001 00000000 00000000 : 00110000
Change permissions             00000000 00010100 00000000 00000000 : 00140000
Change ownership               00000000 00011000 00000000 00000000 : 00180000

相关内容