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

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

在 Windows 系统中(特别是我正在使用的 Windows Server 2008R2),有时当我将本地用户添加到本地组时,该用户需要注销并重新登录,然后新组才会注册给他。

但有时,群组注册也会立即完成,无需用户注销并重新登录。

为什么会这样?

答案1

您提到了本地用户和组,因此将 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

    • 系统将提示您输入密码。输入您的密码。

在上面的例子中,您使用的用户名与您已经登录的用户名相同。

相关内容