在 Active Directory 域中,如果我在域成员计算机上将 Windows 服务配置为以 AD 用户帐户(又名“老式服务帐户”)启动,然后该服务保持运行,但我一年内没有重新启动该服务或重新启动机器...服务帐户的用户对象的 LastLogonTimestamp 会继续更新吗?
编辑:如果您说“这取决于服务”,那么请使用 MS SQL Server 作为示例。我将 MSSQL Engine 设置为以 contoso\sql-service 运行。然后我将其放置了一年。
答案1
经过一些研究:
LastLogonTimestamp 已更新以下登录类型:交互式登录、网络登录和服务登录。
但是,该属性不会随着每次登录而更新......
还有一个属性ms-DS-Logon-Time-Sync
控制属性更新频率(以天为单位)LastLogonTimestamp
。默认值为 14 天,并在代码中设置,因此如果您查看 ADSIEdit 中的值,则不会看到它已设置。
因此,更新的决定LastLogonTimestamp
取决于当前日期减去ms-DS-Logon-Time-Sync
随机百分比(5)的值。如果结果等于或大于,则LastLogonTimestamp
更新属性并将其复制到其他 DC。
过程:
lastLogontimeStampUpdate 更新演练
- (假设 ms-DS-Logon-Time-Sync-Interval 的值为默认值 14)
- 用户登录域
- 检索用户的 lastLogontimeStamp 属性值
- 14 - (5 的随机百分比)= X
- 当前日期 - lastLogontimeStamp 的值 = Y
- X ≤ Y - 更新 lastLognTimeStamp
- X > Y - 不更新 lastLogontimeStamp
其中大部分内容可在 Microsoft 目录服务团队的以下博客文章中找到:LastLogonTimeStamp 属性” – “它的设计目的是什么以及它是如何工作的”
所以,是的,您应该看到属性更新,但仅基于上面描述的时间。
答案2
我已经设置了一个运行此实验的环境。它由一个 Active Directory 组成,并将 MSDS-LogonTimeSyncInterval 设置为 1 天。然后,我在另一台加入域的服务器上安装了一个 MS SQL 实例,并创建了一个新域帐户作为 SQL 服务帐户。SQL 于 6 月 9 日启动,当然,当 SQL 启动时,服务帐户也是第一次登录到域。服务帐户的 LastLogonDate 仍未从其初始值 6 月 9 日更新,我预计它永远不会更新……直到重新启动 SQL。
其背后的想法是,如果我正在寻找需要禁用的“非活动”用户帐户,仅依靠用户的 LastLogonDate 就可以找到一些仍在使用但恰好用于运行很长时间未重新启动的服务帐户。