NT NTHORITY\SYSTEM - это пользователь или группа?
В Windows пользователь System
отображается с символом группы: , (Использование внутреннего Win32 API LookupAccountSid также показывает, что это, похоже, группа SidTypeGroup.)
С другой стороны, процессы могут выполняться в system context
как в user context
, Также документы Microsoft описывают его как "системный пользователь" или "системная учетная запись", а не как "системная группа".
Это пользователь, который для каких-либо устаревших целей отображается как группа?
(Или это было бы интересно Вернеру Гейзенбергу?)
Примечание. Что такое пользователь NT AUTHORITY\SYSTEM? похож, но не отвечает на вопрос, почему он отображается как группа и ведет себя как пользователь.
2 ответа
Во-первых, токен доступа содержит гораздо больше, чем идентификатор безопасности (SID). Нужно только "запустить от имени администратора" программу, чтобы увидеть в диспетчере задач, что ее пользователь является самим собой, а не администратором, и это чудо достигается просто путем изменения токена доступа, а не путем замены SID.
Во-вторых, NT-AUTHORITY и SYSTEM не являются ни учетными записями, ни группами, несмотря на то, что говорят различные другие источники (даже внутри Microsoft). У SID обычно есть имя, которое отображается при необходимости. Учетная запись пользователя будет передавать свой SID в качестве основного SID токену доступа, который также будет определять имя, отображаемое различными утилитами. Но токен доступа может содержать дополнительные SID, например, для всех групп, к которым принадлежит эта учетная запись пользователя. При проверке разрешений Windows будет искать любой SID в маркере доступа, который имеет это разрешение.
Некоторые известные Windows SID будут иметь имена, сообщаемые Windows, хотя на самом деле они не принадлежат какой-либо учетной записи.
Идентификатор безопасности определяется Википедией как:
уникальный неизменный идентификатор пользователя, группы пользователей или другого участника безопасности.
SID не должен даже определять учетную запись пользователя или группу. Он просто определяет набор разрешений. Приведенная выше статья в Википедии добавляет:
Windows предоставляет или запрещает доступ и привилегии к ресурсам на основе списков контроля доступа (ACL), которые используют SID для уникальной идентификации пользователей и их членства в группах. Когда пользователь входит в компьютер, создается токен доступа, который содержит SID пользователя и группы и уровень привилегий пользователя. Когда пользователь запрашивает доступ к ресурсу, токен доступа сравнивается с ACL, чтобы разрешить или запретить конкретное действие с конкретным объектом.
СИД NT-AUTHORITY\SYSTEM
можно добавить в другие аккаунты. Например, это сказано об учетной записи LocalSystem:
Учетная запись LocalSystem является предопределенной локальной учетной записью, используемой диспетчером управления службами. [...] Его токен включает идентификаторы NT AUTHORITY\SYSTEM и BUILTIN\Administrators; эти учетные записи имеют доступ к большинству системных объектов.
В приведенном выше тексте уже можно увидеть путаницу, которая царит даже в документации Microsoft относительно системных идентификаторов безопасности, которые не являются ни учетными записями, ни группами, а просто набором разрешений. Эта путаница распространяется и на другие утилиты и статьи, поэтому любая возвращенная информация должна быть тщательно изучена.
В статье Microsoft " Известные идентификаторы безопасности в операционных системах Windows" подробно описываются все системные идентификаторы безопасности, некоторые из которых я включаю ниже:
Вывод: NT-AUTHORITY\SYSTEM - это имя идентификатора безопасности, который не является ни группой, ни учетной записью. Он отображается в диспетчере задач как СИСТЕМА, когда он является основным SID программы. Максимум, что я бы назвал, это "псевдо-счет".
ИМХО ваши наблюдения верны. NT-AUTHORITY\SYSTEM
это группа, так что вы можете называть ее системной группой. Эта группа существует, по крайней мере, начиная с Windows NT 4, и уже была группой там:
Специальные группы
[...]
Система - операционная система.
Существует также учетная запись под названием LocalSystem, которая
[...] включает NT AUTHORITY\SYSTEM [...]
так что вы можете назвать это системным пользователем, который является членом группы SYSTEM.
SysInternals PsGetSid поддерживает теорию групп для SYSTEM:
C:\>PsGetsid.exe S-1-5-18
PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
Account for YOURPCNAMEHERE\S-1-5-18:
Well Known Group: NT-AUTHORITY\SYSTEM
Относительно начала процесса как группы:
Для управления безопасностью процесс получает токен доступа. Маркер доступа содержит только SID. Я не уверен, есть ли проверка, является ли SID пользователя действительно пользователем или группой. В принципе это не имеет значения: SID определяет, к чему можно получить доступ. Возможно, статья CodeProject может помочь с реализацией