
Если у меня есть следующие 3 значения разрешений для 3 отдельных папок в Windows:
Decimal: 268435456 - Binary: 10000000000000000000000000000 - 29 bits
Decimal: 134217728 - Binary: 1000000000000000000000000000 - 28 bits
Decimal: 67108864 - Binary: 100000000000000000000000000 - 27 bits
Как интерпретировать эти три значения разрешений?
ЗдесьРуководство по формату маски доступа MSDN:
Следует ли мне дополнять общие разрешения нулями перед самым старшим битом (с левой стороны), чтобы сделать двоичное слово длиной 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
Ссылка на статью MSDN о маске доступа.
Все 32-битные разрешения должны быть дополнены с левой стороны (старший бит). После этого становится ясно, как бит согласуется с масками доступа, используемыми Microsoft для определения разрешений.
Кроме того, похоже, что знаковые и беззнаковые представления "Generic Read" (-2147483648) дают одну и ту же двоичную последовательность. Я действительно не уверен на 100%, какое значение имеет знак в этом значении, но, возможно, это имеет значение для других последовательностей прав доступа.