Пользователям в Windows могут быть предоставлены различные привилегии
Привилегии определяют тип системных операций, которые может выполнять учетная запись пользователя. Администратор назначает права для учетных записей пользователей и групп. Привилегии каждого пользователя включают привилегии, предоставленные пользователю и группам, к которым он принадлежит.
В настоящее время 35 привилегий. Вот некоторые из наиболее интересных:
- SeSystemtimePrivilege : требуется для изменения системного времени.
- SeTimeZonePrivilege : требуется для настройки часового пояса, связанного с внутренними часами компьютера
- SeBackupPrivilege : эта привилегия заставляет систему предоставлять все права доступа для чтения любому файлу независимо от списка управления доступом (ACL), указанного для файла.
- SeCreatePagefilePrivilege : требуется для создания файла подкачки.
- SeRemoteShutdownPrivilege : требуется для выключения системы с помощью сетевого запроса.
- SeDebugPrivilege : требуется для отладки и настройки памяти процесса, принадлежащего другой учетной записи.
Но то, что меня интересует, это:
- SeShutdownPrivilege : требуется для выключения локальной системы.
Я заметил, что на самом деле у меня нет этой привилегии. Из командной строки с повышенными правами:
>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
...
SeShutdownPrivilege Shut down the system Disabled
...
Это подтверждается при использовании Process Explorer для проверки токена безопасности процесса с повышенными правами, работающего под моим именем:
И все же я могу выключить систему. Зачем?
Групповая политика говорит, что я должен иметь это
Если вы используете оснастку редактора локальной политики безопасности secpol.msc
, вы увидите, что у меня должна быть привилегия:
Explaination привилегии:
Выключить систему
Этот параметр безопасности определяет, какие пользователи, которые локально вошли в систему компьютера, могут завершить работу операционной системы с помощью команды «Завершение работы». Неправильное использование этого права пользователя может привести к отказу в обслуживании.
По умолчанию на рабочих станциях: администраторы, операторы резервного копирования, пользователи.
По умолчанию на серверах: администраторы, операторы резервного копирования.
По умолчанию на контроллерах домена: администраторы, операторы резервного копирования, операторы сервера, операторы печати.
Я Пользователь . Иногда я администратор , а иногда я не администратор .
Возможно, вопрос должен заключаться в том, почему у меня нет привилегии.
Но реальность такова, что у меня нет привилегии; и все же при локальном входе в систему я могу выключить локальную систему.
Зачем?
У @Mehrdad был хороший ответ, который он удалил, который, я думаю, заслуживает внимания и отвечает на вопрос красиво и лаконично:
У вас есть привилегия. Это просто отключено по умолчанию. Если бы у вас не было этой привилегии, ее бы не было в списке .
Обратите внимание, чтоSE_PRIVILEGE_REMOVED
отличается от отсутствияSE_PRIVILEGE_ENABLED
илиSE_PRIVILEGE_ENABLED_BY_DEFAULT
.
Бонус Чтение
источник
Ответы:
У вас есть разрешение, но оно отключено . Это то, что PowerShell говорит вам.
Для выключения системы вы используете функцию Win32API, которая называется
InitiateSystemShutdown
илиExitWindowsEx
:Примечание этих функций:
Как видите, Windows проверяет привилегии потоков (любой поток имеет токен с привилегиями). Если вы звоните
ExitWindowsEx
без привилегии SE_SHUTDOWN_NAME , функция завершится с ошибкой:Потоки, которые вы создаете по умолчанию, наследуют ваши привилегии; но программа может включить отключенную привилегию, которая была предоставлена с помощью
AdjustTokenPrivileges
:Изменение привилегий в токене говорит:
Итак, почему эта привилегия отключена по умолчанию? Чтобы убедиться, что ни одна программа не может закрыть Windows случайно. Приложения должны запрашивать это явно.
Есть древняя, но очень хорошая книга: https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/ обо всем этом.
источник
Это потому, что ваш пользователь принадлежит к группе, для которой эта привилегия включена.
Чтобы увидеть для себя, какие группы:
secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
.SeShutdownPrivilege
запись. Вы должны (должны) увидеть пару / несколько идентификаторов безопасности для пользователей и / или групп, для которых эта привилегия включена.Итак, у меня есть три коротких SID. Короткие идентификаторы обычно представляют собой учетные записи / группы на уровне компьютера. Например, один из них
S-1-5-32-545
.Используя PowerShell, мы можем определить, какую учетную запись / группу представляет SID:
Это возвращается
BUILTIN\Users
.Поскольку вы являетесь пользователем этого компьютера, вы автоматически становитесь членом этой группы, то есть вы можете выключить компьютер.
Два других у меня есть
S-1-5-32-544
, иS-1-5-32-551
. Это стандартнаяBUILTIN\Administrators
группа иBUILTIN\Backup Operators
группа. Какую линию с группами вы видите вsecpol.msc
диалоге.источник