如果我对 Windows 中的 3 个独立文件夹具有以下 3 个权限值:
Decimal: 268435456 - Binary: 10000000000000000000000000000 - 29 bits
Decimal: 134217728 - Binary: 1000000000000000000000000000 - 28 bits
Decimal: 67108864 - Binary: 100000000000000000000000000 - 27 bits
我该如何解释这 3 个权限值?
这里是MSDN 访问掩码格式指南:
我是否应该在最高有效位(左侧)前面用 0 填充我的通用权限,以使二进制字长为 32 位?
我的理解是,通用权限是 32 位无符号整数值,但我-1610612736
总是看到权限。它们是无符号的,只是被表示为有符号的吗?
我正在使用 PowerShell 创建权限检查脚本并遇到这个问题......这个 stackoverflow 帖子很相关。也我已经在 TechNet 上发布过关于此问题的帖子。
答案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
所有 32 位权限都应在左侧(最高有效位)填充。完成此操作后,便可清楚了解该位如何与 Microsoft 用于确定权限的访问掩码对齐。
此外,似乎“通用读取”(-2147483648) 的有符号和无符号表示产生完全相同的二进制序列。我真的不能 100% 确定符号对这个值有什么影响,但也许这对其他访问权限序列很重要。