15

В Windows пользовательская System отображается с символом группы: , (Использование внутреннего Win32 API LookupAccountSid также показывает, что это, похоже, группа SidTypeGroup.)

С другой стороны, процессы могут выполняться в system context как в user context . Также документы Microsoft описывают его как "системный пользователь" или "системная учетная запись", а не как "системная группа".

Это пользователь, который для каких-либо устаревших целей отображается как группа?

(Или это было бы интересно для Вернера Гейзенберга ?)


Примечание. Что такое пользователь NT AUTHORITY\SYSTEM? похож, но не отвечает на вопрос, почему он отображается как группа и ведет себя как пользователь.

2 ответа2

11

Во-первых, токен доступа содержит гораздо больше, чем идентификатор безопасности (SID). Нужно только "запустить от имени администратора" программу, чтобы увидеть в диспетчере задач, что ее пользователь является самим собой, а не администратором, и это чудо достигается просто путем изменения токена доступа, а не путем замены SID.

Во-вторых, NT-AUTHORITY и SYSTEM не являются ни учетными записями, ни группами, несмотря на то, что говорят различные другие источники (даже внутри Microsoft). У SID обычно есть имя, которое отображается при необходимости. Учетная запись пользователя будет предоставлять свой SID в качестве основного SID для маркера доступа, который также будет определять имя, отображаемое различными утилитами. Но маркер доступа может содержать дополнительные SID, например, для всех групп, к которым принадлежит эта учетная запись пользователя. При проверке разрешений Windows будет искать любой SID в маркере доступа, который имеет это разрешение.

Некоторые известные Windows SID будут иметь имена, сообщаемые Windows, хотя на самом деле они не принадлежат какой-либо учетной записи.

Идентификатор безопасности определяется Википедией как:

уникальный неизменный идентификатор пользователя, группы пользователей или другого участника безопасности.

SID не должен даже определять учетную запись пользователя или группу. Он просто определяет набор разрешений. Приведенная выше статья в Википедии добавляет:

Windows предоставляет или запрещает доступ и привилегии к ресурсам на основе списков контроля доступа (ACL), которые используют SID для уникальной идентификации пользователей и их членства в группах. Когда пользователь входит в компьютер, создается токен доступа, который содержит SID пользователя и группы и уровень привилегий пользователя. Когда пользователь запрашивает доступ к ресурсу, токен доступа сравнивается с ACL, чтобы разрешить или запретить конкретное действие с конкретным объектом.

SID NT-AUTHORITY\SYSTEM может быть добавлен к другим учетным записям. Например, это сказано об учетной записи LocalSystem:

Учетная запись LocalSystem является предопределенной локальной учетной записью, используемой диспетчером управления службами. [...] Его токен включает идентификаторы NT AUTHORITY\SYSTEM и BUILTIN\Administrators; эти учетные записи имеют доступ к большинству системных объектов.

В приведенном выше тексте уже можно увидеть путаницу, которая царит даже в документации Microsoft относительно системных идентификаторов безопасности, которые не являются ни точными учетными записями, ни группами, а представляют собой просто набор разрешений. Эта путаница распространяется и на другие утилиты и статьи, поэтому любая возвращенная информация должна быть тщательно изучена.

В статье Microsoft « Известные идентификаторы безопасности в операционных системах Windows» подробно описаны все системные идентификаторы безопасности, некоторые из которых я приведу ниже:

образ

Вывод: NT-AUTHORITY\SYSTEM - это имя идентификатора безопасности, который не является ни группой, ни учетной записью. Он отображается в диспетчере задач как СИСТЕМА, когда он является основным SID программы. Максимум, что я бы назвал, это «псевдо-счет».

7

ИМХО твои наблюдения верны. 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 может помочь с реализацией

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .