Windowsシステム(特に、私が使用しているWindows Server 2008R2)では、ローカルユーザーをローカルグループに追加するとき、この新しいグループがローカルグループに登録される前に、ユーザーがログオフして再度ログオンする必要があります。
ただし、グループの登録はすぐに行われることもあります。ユーザーがログオフして再度ログオンする必要はありません。
これはなぜですか?
ローカルユーザーとローカルグループについて言及しているため、Active Directoryは脇に置いておきます。
ユーザーのセキュリティトークンに新しいグループメンバーシップを含めるには、常にを再認証する必要があります。これは通常、再ログインする必要があることを意味します。 LSASSは、ユーザーが認証するときにのみこのトークンを渡します。これは、ログオン時にのみ通常ですが、C:\> runas /user:Yourself cmd.exe
のようなことができ、プロンプトが表示されますパスワードを入力すると、認証が再度行われ、新しいグループメンバーシップが取得されます。 (ただし、グループメンバーシップを照会した可能性のある他の実行中のアプリケーションが、それらのアプリケーションを再起動せずにデータを更新することなどは保証できません。)
(klist.exe
については言及していません。これは、ローカルユーザーとグループについてのみ話しているためです。)
ユーザーが認証されると、ローカルセキュリティ機関(LSA)がそのユーザーのアクセストークン(この場合はプライマリアクセストークン)を作成します。アクセストークンには、ユーザーのセキュリティ識別子(SID)、ユーザーが属するグループのすべてのSID、およびユーザーの特権が含まれています。ユーザーのアクセストークンが発行された後にユーザーをグループに追加した場合、またはユーザーアカウントに割り当てられた権限を変更した場合、ユーザーはログオフしてから再度ログオンしてからアクセストークンを更新する必要があります。
スレッドまたはプロセスがセキュリティ保護可能なオブジェクトとやり取りしたり、特権を必要とするシステムタスクを実行しようとすると、オペレーティングシステムは有効なアクセストークンをチェックして、承認のレベルを決定します。スレッドが偽装している場合、通常、有効なトークンがスレッド上のトークンと見なされます。セキュリティ保護可能なオブジェクトと対話するスレッドが偽装されていない場合は、プロセスのトークンでアクセス決定が検査されます。
したがって、アクセストークンには、プライマリと偽装の2種類があります。すべてのプロセスには、プロセスに関連付けられたユーザーアカウントのセキュリティコンテキストを説明するプライマリトークンがあります。通常、プライマリアクセストークンはプロセスに割り当てられ、そのプロセスのデフォルトのセキュリティ情報を表します。一方、偽装アクセストークンは、通常、クライアント/サーバーシナリオで使用されます。偽装トークンを使用すると、スレッドは、そのスレッドを所有するプロセスのセキュリティコンテキストとは異なるセキュリティコンテキストで実行できます。
このビデオはある意味で質問に答えます https://vimeo.com/73500318
このビデオは、ユーザーがログオフして再度ログインする必要なく、グループメンバーシップが追加されたばかりのリソースにユーザーがアクセスするという問題も解決します。
ログインログオフの煩わしさを回避するソリューションの概要を次に示します。
オープンコマンドプロンプトの強制終了
Explorer.exeプロセスを強制終了します(Windowsエクスプローラのみを強制終了します。他のすべてのアプリケーションは安全です)。
コマンドプロンプトで次のコマンドを入力します。runas/user:DOMAIN\Explorer.exe
上記の例では、使用するユーザー名は、すでにログオンしているユーザー名と同じです。