为什么有时需要注销并重新login才能向用户添加组

在Windows系统(特别是我使用的Windows Server 2008 R2)中,有时当我将一个本地用户添加到本地组时,用户需要先注销并重新login,然后再注册这个新组。

但是有时候,组注册是立即完成的,用户不必再次注销并重新login。

为什么这样呢?

你提到本地用户和组,所以放置Active Directory。

您应始终需要重新进行身份validation,以便用户的安全令牌包含新的组成员身份。 这通常意味着您需要重新login。 当用户进行身份validation时,LSASS只会把这个令牌传出, 通常只有在login时才能执行,但是你可以像C:\> runas /user:Yourself cmd.exe ,并且会提示你input密码,然后你将再次通过身份validation并且你的新的组员会被拿起来。 (但我不能保证任何其他正在运行的应用程序可能会查询您的组成员资格将刷新其数据,而无需重新启动这些应用程序等)

(不提klist.exe因为我们只是谈论本地用户和组)。

这篇文章几乎是关于这个问题的权威。

当用户通过身份validation时,本地安全机构(LSA)为该用户创build一个访问令牌 – 在这种情况下是主访问令牌。 访问令牌包含用户的安全标识符(SID),用户所属的组的所有SID以及用户的权限。 如果在用户的访问令牌发布后将用户添加到组中,或者修改了分配给用户帐户的权限,则用户必须先注销,然后再次login才能更新访问令牌。

只要线程或进程与安全对象交互或尝试执行需要特权的系统任务,操作系统就会检查有效的访问令牌以确定其授权级别。 如果一个线程正在冒充,那么通常将有效令牌作为线程上的令牌。 如果一个与安全对象交互的线程没有模仿,那么就会检查进程中的令牌以作出访问决定。

因此,有两种访问令牌,主要和模拟。 每个进程都有一个主令牌,用于描述与进程相关的用户帐户的安全上下文。 主访问令牌通常分配给进程以表示该进程的默认安全信息。 另一方面,模拟访问令牌通常用于客户端/服务器场景。 模仿令牌使线程能够在与拥有线程的进程的安全上下文不同的安全上下文中执行。

该video以某种方式回答了问题https://vimeo.com/73500318

该video还解决了用户访问资源的问题,该资源的组成员资格已经添加到个人,而无需注销并重新login。

以下是避免login注销麻烦的解决scheme摘要:

  • 打开命令提示符杀死

  • 杀死Explorer.exe进程(它只会杀死Windows资源pipe理器,所有其他应用程序都是安全的)。

  • 在命令提示符下键入以下命令:runas / user:DOMAIN \ explorer.exe

    • 系统将提示您input密码。 input您的密码。

在上面的示例中,您将使用的用户名与您已经login的用户名相同。