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 может помочь с реализацией

Другие вопросы по тегам