细说LastLogonTimeStamp
微软在Windows Server 2003中引入了LastLogonTimeStamp属性。管理员们可以利用这个属性查看用户或者计算机最近是否登录过域。根据这些信息,管理员可以对长时间没有登录的账户采取相应的措施。
有人就会问了,不是有LastLogon这个属性吗,为什么还要引入LastLogonTimeStamp这个属性呢?这个问题问得好,那么我先来解释一下这两个属性的区别吧。
LastLogon是记录某个账户上一次在该域控制器认证的时间。该属性是不会在域控制器之间复制的。所以,要是以前需要确定账户最后一次登录域的时间,必须查看所有域控制器上的LastLogon,最大的那个值就代表了账户最后一次登录域的时间。LastLogon只会记录交互式登录,Kerberos验证的用户。
LastLogonTimeStamp的值会在所有域控制器间复制。所以管理员只要从一个域控制器上就能得到用户上次登录的信息。不过,LastLogonTimeStamp的值并不一定代表真实的最后一次登录域的时间。它是根据一个更新间隔来更新的(注意:要启用这个属性,域功能级别必须是Windows Server 2003喔)。LastLogonTimeStamp会记录交互式登录,Kerberos和NTLM验证的用户。
这时候有人又会问了,LastLogonTimeStamp既然不一定代表真实的最后一次登录域的时间,那么干嘛要引入呢?作者也有过类似的疑问。不过后面想想,觉得也合情合理。因为管理员利用该值对长时间没有登录的账号进行管理,那么该值只要能反映出账号长时间没有登录这个信息就好了。所以,在合适的更新间隔情况下,LastLogonTimeStamp就能反映出长时间没有登录这个信息,同时减少了AD复制流量,减轻了网络负担,何乐而不为呢?
好吧,你肯定又想知道这个更新间隔是怎么回事了。待我慢慢道来。
基本更新间隔是由msDS-LogonTimeSyncInterval这个属性定义的。默认是14天。该基本更新间隔可以在域的属性中设置,范围为1到100,000天。同时还有一个窗口(Window)以及一个随机参数(Parameter)用来调节整个更新间隔,避免LastLogonTimeStamp的值在同一个时间更新。窗口的默认值为5天,随机参数为一个百分比。真正的更新间隔Actual_Interval计算公式如下:
Actual_Interval = msDS-LogonTimeSyncInterval – Window * Parameter
举例说明:假如一个用户的LastLogonTimeStamp为2011/09/01,该用户在2011/09/10再次登录域。msDS-LogonTimeSyncInterval为14,Window为5,Parameter为80%。所以真正的更新间隔Actual_Interval为14 – 5 * 0.8 = 10。这时候由于没有满足更新条件,所以LastLogonTimeStamp不更新。请注意,用户登录后,在提供认证服务的域控制器上,LastLogon更新为2011/09/10。假如该用户在2011/09/11再次登录,这时候LastLogonTimeStamp就会更新为2011/09/11,并在域控制器之间进行复制。
刚好在作者的虚机里有这样的例子,那么我们根据图来看看这个LastLogonTimeStamp的更新吧。为了在Active Directory Users and Computer中的账户属性中看到这个属性,作者安装了AcctInfo2.dll。作者的虚机环境:两台域控制器在线(系统为Windows Server 2003 SP1),win2003AD和win2k3DC2;一台客户端win2k3ClientXP(系统为Windows XP)。
如下图XPClient用户登录前,在Win2003AD机器上,LastLogonTimeStamp为2011/08/31,而LastLogon为2011/09/13,这个间隔已经超过了更新间隔,所以假如XPClient登录,LastLogonTimeStamp必然会更新。
XPClient从win2k3ClientXP客户端登录之后,在Win2003AD机器上的LastLogonTimeStamp已经改变,如下图XPClient用户登录后所示。
细心的读者你肯定已经发现问题了吧,对的,两个图的LastLogon是一样的,这是为什么呢?原因就是,当前环境中有两台域控制器,而用户登录时联系的域控制器不是Win2003AD而是Win2k3DC2,所以LastLogon最新的数据会出现在Win2k3DC2上,如下图Win2k3DC2上XPClient信息。从这个图也可以看出,LastLogonTimeStamp已经通过AD复制同步了所有域控制器上的数据。
好了,今天的分享就到这里吧,相信通过上面详细的介绍之后,大家已经对LastLogonTimeStamp很了解了吧。
谢谢,
屈贝伟 | 企业平台支持部AD技术工程师 | 微软亚太区全球技术支持中心
本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予。
细说LastLogonTimeStamp的更多相关文章
- 匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密
0x00 前言 在匹夫的上一篇文章<匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置>的最后,匹夫以总结和后记的方式涉及到一部分迭代器的知识.但是觉得还是不够过瘾,很多需要说清楚 ...
- 细说WebSocket - Node篇
在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...
- 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...
- 细说Java主流日志工具库
概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...
- 细说 Form (表单)
细说 Form (表单) Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源. 虽然Asp.net WebForms框架为了帮助 ...
- 细说ASP.NET Forms身份认证
阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 理解Forms身份认证 实现自定义的身份 ...
- 细说CSS选择器
众所周知,CSS的一个核心特征就是能向文档中的一组元素类型应用某些规则.每个规则都有两个基本部分:选择器(selector)和声明块(declaration block).下图显示了规则的各个部分. ...
- [转]细说Redis监控和告警
原文 https://zhuoroger.github.io/2016/08/20/redis-monitor-and-alarm/? 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其r ...
- 细说.NET 中的多线程 (一 概念)
为什么使用多线程 使用户界面能够随时相应用户输入 当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在不同的线程中进行. ...
随机推荐
- Java for LeetCode 054 Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- sublime text3侧边栏主题不生效问题解决
sublime text3主题插件: Seti_UI 插件安装: 在线安装:需要FQ window: ctrl+shift+p 找install package:之后搜索 Seti_UI 安装完成后需 ...
- intellij 2016注册
第一种方法: http://idea.qinxi1992.cn http://idea.imsxm.com/ http://107.191.37.186:11688
- Mysql DDL与DML
1,文件导入:LOAD DATA INFILE '/tmp/pet.txt' INTO TABLE pet FIELDS TERMINATED BY ',' LINES TERMINATED BY ' ...
- 使用rsync 的 --delete参数删除目标目录比源目录多余的文件
root@v01 ~]# mkdir dir01 dir02 [root@v01 ~]# ls anaconda-ks.cfg dir02 framework install.log.syslog m ...
- mysql中char,varchar与text类型的区别和选用
关于char,varchar与text平时没有太在意,一般来说,可能现在大家都是用varchar.但是当要存储的内容比较大时,究竟是选择varchar还是text呢?不知道...... 于是去查阅了一 ...
- PHP数组的使用方法小结
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 一.什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体 ...
- hdu 1754 单点更新
题意:很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师 ...
- C++程序设计课程学习的网址
很详细 C++程序设计课程主页 http://blog.csdn.net/sxhelijian/article/details/7910565 孙鑫C++视频教程 rmvb格式 全20CD完整版 ...
- Eclipse中导入外部jar包
首先在项目下创建一个文件夹,保存我们的jar包. 在项目名上右击,依次点击[New]-->[Floder],打开新建文件夹窗口 输入文件夹名称[lib],点击[ok].我们通常在lib文件夹 ...