Windowsでは、ユーザーSystem
はグループ記号 。 (内部Win32 APIの使用 LookupAccountSid は、それがグループであるように見える SidTypeGroup 。)
一方、プロセスはsystem context
のようにuser context
で実行できます。また、Microsoftのドキュメントでは、「システムグループ」ではなく、「システムユーザー」または「システムアカウント」と説明しています。
これは、レガシー目的でグループとして表示されるユーザーですか?
(それとも何か Werner Heisenberg は興味があったでしょうか?)
注: NT AUTHORITY\SYSTEMユーザーとは は似ていますが、なぜグループとして表示され、ユーザーのように動作するのかという質問には答えません。
まず、 アクセストークン には セキュリティ識別子(SID) よりも多くの情報が含まれています。ユーザーが管理者ではなく自分自身であることをタスクマネージャーで確認するには、プログラムを「管理者として実行」するだけです。この奇跡は、SIDを置き換えるのではなく、アクセストークンを変更するだけで実現できます。
第二に、NT-AUTHORITYとSYSTEMは、他のさまざまな情報源(Microsoftの内部であっても)にかかわらず、アカウントでもグループでもありません。通常、SIDには、必要なときに表示される名前があります。ユーザーアカウントは、そのSIDをプリンシパルSIDとしてアクセストークンに提供します。アクセストークンは、さまざまなユーティリティによって表示される名前も決定します。ただし、アクセストークンには追加のSIDが含まれている可能性があります。たとえば、そのユーザーアカウントが属するすべてのグループなどです。アクセス許可を確認するとき、Windowsはそのアクセス許可を持つアクセストークン内のSIDを探します。
一部の有名なWindows SIDは、Windowsによって報告された名前を持っていますが、実際にはどのアカウントにも属していません。
セキュリティ識別子 はWikipediaで次のように定義されています:
ユーザー、ユーザーグループ、またはその他のセキュリティプリンシパルの一意の不変の識別子。
SIDは、ユーザーアカウントやグループを定義する必要さえありません。一連の権限を定義するだけです。上記のウィキペディアの記事には次のものが追加されています。
Windowsは、SIDを使用してユーザーとユーザーのグループメンバーシップを一意に識別するアクセス制御リスト(ACL)に基づいて、リソースへのアクセスと特権を許可または拒否します。ユーザーがコンピューターにログインすると、ユーザーおよびグループのSIDとユーザー特権レベルを含むアクセストークンが生成されます。ユーザーがリソースへのアクセスを要求すると、アクセストークンがACLに対してチェックされ、特定のオブジェクトに対する特定のアクションが許可または拒否されます。
NT-AUTHORITY\SYSTEM
のSIDを他のアカウントに追加できます。たとえば、これは LocalSystem Account について述べられています。
LocalSystemアカウントは、サービスコントロールマネージャーによって使用される定義済みのローカルアカウントです。 [...]そのトークンには、NT AUTHORITY\SYSTEMおよびBUILTIN\Administrators SIDが含まれています。これらのアカウントは、ほとんどのシステムオブジェクトにアクセスできます。
上記のテキストでは、Microsoftのドキュメントでも、システムSIDに関して統治している混乱を確認できます。システムSIDは、アカウントでもグループでもありません。これらは単なる権限のセットです。この混乱は他のユーティリティや記事にまで及ぶため、返された情報は慎重に調査する必要があります。
Microsoftの記事 Windowsオペレーティングシステムの既知のセキュリティ識別子 は、すべてのシステムSIDの詳細です。
結論:NT-AUTHORITY\SYSTEMはセキュリティIDの名前であり、グループでもアカウントでもありません。これは、プログラムの主要なSIDである場合、タスクマネージャーでSYSTEMとして表示されます。私がそれを最も呼ぶのは「疑似アカウント」です。
私見あなたの観察は正しいです。 NT-AUTHORITY\SYSTEM
はグループなので、システムgroupとして参照できます。このグループ Windows NT 4以降に存在 少なくとも、すでにグループになっています:
特別なグループ
[...]
システム-オペレーティングシステム。
LocalSystem というアカウントもあります。
[...]にはNT AUTHORITY\SYSTEMが含まれます[...]
したがって、これをSYSTEMグループのメンバーであるシステムuserと呼ぶことができます。
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の記事 は実装に役立ちます