在“你问我答”的有关页面中,大家已经知道,加入一个 NT 网络有如下方式: 登录到一个域 登录到一个本地工作站 登录到一个本地服务器 这里也包括 Novell 客户机和 Macintosh 机。登录的种类则有如下两种: 本地登录:使用登录框通过键盘直接与服务器或工作站进行交互操作,若用户有相应的授权就能够执行登录。 网络(远程)登录:连接到由 NT 服务器提供的远程文件或打印共享资源。 通过验证:连接到由委托域中的 NT 服务器提供的共享资源上。 一、怎样登录? 任何一个用户要登录到一个域控制器上,必须要有域管理员授予的登录权限,在登录框中必须选择相应的域名。一个用户登录成功,实际表明他已经顺利通过了 NT Server 的目录数据库用户验证。目录数据库决定用户登录的对象是域还是本地机器。 在Windows NT 中,下列用户组的成员可以直接登录到一个域控制器: Administrator 、Server Operators 、Print Operators 、Account Operators 、Backup Operators; Users 组可以登录到一台 NT Workstation,而 Everyone 组在默认状态下不允许登录到 NT Server 的权限。通过“域用户管理器”可以对此进行查看。
二、登录之后又怎么样? 大家也许有这种经验,有时,我们可以在一个 NT 服务器上看到很多共享目录(我们这里假定通过 Windows 98 工作站的“网上邻居”来进行),但当我们想要打开它时,却提示拒绝访问,虽然我们是该域控制器的合法成员且已登录成功。这是怎么回事? 实际上,当一个用户通过了 NT Server 的目录数据库验证之后,系统会授予一个访问记号给该用户。当该用户想打开或读取 NTFS 磁盘上的一个已经由访问许可权限加以保护的文件时,系统就会根据设置在该文件上的许可权限来验证用户的安全访问记号,因为这个安全访问记号里包含了用户名、密码、用户安全标识符、用户所属组的全部安全标识符及相应的权限等信息。这也就是为什么在安装 NT 的 Windows 95 无盘工作站时要求将 NT 、SBS 及 Machine 目录都建立在一个 NTFS 分区的原因。
三、目录数据库怎样进行身份验证 根据 NT Server 工作站的不同,目录数据库中存储有两种格式的用户密码:LAN Manager 格式和 Windows NT格式。这里我们只讨论第二种。一般说来,我们是通过“域用户管理器”来控制某个用户的权限的,则该用户的密码也就是以 Windows NT 格式存放在目录数据库中的。 Windows NT 格式的密码的特点: 密码最多不能超过14个字符; 密码采用 Unicode 字符集; 密码区分大小写; 密码采用 RSA MDF-4 加密算法。 对我们用户来说,在登录时所面对的就是一个登录框,要求您输入自己的用户名和密码,或者可以选择其它域(如果有的话)。当我们输入完用户名和密码并回车后,一般在短暂的等待之后会有这样两种结果:登录成功进行 GUI 画面,登录失败出现警告信息确认后回到登录画面。产生出错的原因(非硬件)大致有如下几种: 用户名不存在 密码错误 域不存在(通过工作站登录到某域) 那么系统是如何判断并授予我们在前面提到的安全记号的呢? 实际的登录进程 原来系统在登录时用到了一个 API 函数——LsaLogonUser API,这个函数会调用 Windows NT 内建的验证软件包:MSV1_0包(MSV)。MSV 包由两个不同的程序组成,根据不同的登录方式有不同的的验证过程。
首先,我们来看一下本地登录的密码验证:在本地登录时,MSV 包中的两个程序在同一台机器上进行通讯,其中第一个程序以纯文本方式取得密码然后传递给第二个程序,第二个程序按照域名、用户名、密码的顺序进行判断,如果指定的域名与该电脑所在的域名相同,则系统就接下来检查输入的用户名和密码,否则程序再将该信息传送给 Net Logon 服务。Net Logon 服务负责在不同的域控制器之间进行通讯,当一个用户不能通过其登录电脑的验证时,远程 Net Logon 服务可以接收到本地 Net Logon 传送过去的信息,再由其 MSV 的第二个程序查询目录数据库,对该用户进行验证。
接下来,我们看一下网络登录时的密码验证:一个 Windows NT 的工作站在进行远程登录时,会接收到一个来自服务器经过加密算法计算的“请求”(由16个字节的字符串组成),工作站再采用相同的算法计算出一个同样长度的“请求”响应,然后再将这两个响应发送回服务器。服务器再将接收到的信息传送给 MSV 的第一个程序,这些信息包括:由其自身发出的原“请求”正文和工作站“响应”正文两个部分。MSV 的第一个程序再将这个信息传送给第二个程序,第二个程序再将其与目录数据库中的密码进行比较。如果在目录数据库中有的该密码,则登录成功。
|