解码Windows中的通用权限/访问权限


2

如果我在Windows中为3个单独的文件夹提供以下3个权限值:

Decimal: 268435456 - Binary: 10000000000000000000000000000 - 29 bits

Decimal: 134217728 - Binary: 1000000000000000000000000000 - 28 bits

Decimal: 67108864 - Binary: 100000000000000000000000000 - 27 bits

如何解释这3个权限值?

这里是 MSDN访问掩码格式指南

Access Mask key

我应该在最高位(左侧)前面用0填充我的通用权限,以使二进制字长32位吗?

我的理解是通用权限是32位无符号整数值,但我看到了权限 -1610612736 每时每刻。他们是未签名的,只是被表示为签名?

我正在使用PowerShell创建权限检查脚本并遇到此问题... 此stackoverflow帖子是相关的。 亦是 TechNet帖子我已经解决了这个问题

Answers:


1

好吧我自己回答了 Technet上的一些帮助。

Unpadded "268435456" "Generic All" 29 bits -     10000000000000000000000000000
Unpadded "536870912" "Generic Execute" 30 bits - 100000000000000000000000000000
Unpadded "1073741824" "Generic Write" 31 bits -  1000000000000000000000000000000
Unpadded "-2147483648" "Generic Read" 32 Bits -  10000000000000000000000000000000

现在填充:

Padded "268435456" "Generic All" 32 bits -     00010000000000000000000000000000
Padded "536870912" "Generic Execute" 32 bits - 00100000000000000000000000000000
Padded "1073741824" "Generic Write" 32 bits -  01000000000000000000000000000000
Padded "-2147483648" "Generic Read" 32 Bits -  10000000000000000000000000000000

Access Mask Diagram

链接到访问掩码的MSDN文章。

应在左侧填充所有32位权限(最高位)。完成此操作后,很明显该位如何与Microsoft使用的访问掩码对齐以确定权限。

此外,似乎“通用读取”(-2147483648)的有符号和无符号表示产生完全相同的二进制序列。我真的不是100%肯定这个符号带有什么标志,但也许对其他访问权限序列很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.