为何不能交互式登陆?[1]
[入库:2005年8月18日] [更新:2007年3月25日]
| 前言:
自从这篇文章在计算机世界网站上发表之后,收到了几十封email,对这篇文章提出了宝贵的意见,由于我目前还处于半失业,所以一直没有对这篇文章做出相应的修改(如果哪位网友能提供一个工作机会,本人将不胜感激.....)但现在收到的email越来越多,不可能一一做答,只有把问题最多的几个地方在本文末尾的"疑问与解答"中整理出来,希望对各位有所帮助,谢谢.
前一段时间做了一个win2000的终端网,采用win2000 application server终端服务模式+citrix(sp3),客户机上出现登陆窗口,以域用户普通账号登陆便会出现提示:"计算机不允许交互式登陆",而用administrator登陆却没有问题,开始有点呐闷,这个问题怎么非本地账号登陆域服务器时出现的问题一样,后来查了一查资料,才明白过来。
首先必须讲一讲nt和win2000的身份验证机制。nt和win2000针对域用户账号登陆的验证分别是通过ntlm和kerberos协议,而对本地账号登陆的验证是msv1_0协议,用户通过提供登陆信息(如用户名和密码),服务器将这些信息发送到服务器上的验证机构,验证机构通过比较储存在本地的数据库文件(sam)来判断此用户的身份真实性,如果通过,就会向用户发送一个令牌,此访问令牌即token.在原来的nt模式下,由于域之间的信任关系是单向的,不可传递的,所以一个域用户要获得另一个域的资源访问权限,必须手工建立信任关系,授权该用户的访问权限。而在现在的win2000域模式下,每个用户的token是sid+域id,即guid,在一个森林中是永不变的,由每域的rid主机(相对关系主机)来分配的。sid在每个域中是独一无二的,但在其他域中也可能出现同样的sid,但是由于域id的不同,所以二者的guid就不可能相同。但这必须建立在kerberos协议的基础上,kerberos提供了域之间可传递的,双向的信任关系,即a信任b,b信任a;a信任b,b信任c,a信任c。当然也可手工调整.一个用户仅仅具有一个token是不够的,token只能保证用户是否能在该域或本地计算机上的登陆权限,而用户是否能对资源的访问及系统权限是由acl及ace来控制的。acl(access control list)是每个文件及文件夹的用户组及用户访问控制列表,而ace(access control entry)是具体的访问类型(如read,write等等). |
| 再谈一谈针对win2000域环境下本地交互登陆的机制.众所周知,win2000对于用户登陆的验证采用的是kerberos协议,当一个本地用户登陆到域服务器,gina(graphical identification and authentication)图形标示符及身份验证dll收到登陆请求,就会将其转发到lsa(本地权威机构),而在win2000下由于kerberos是默认的验证机制,所以就请求kerberos来验证身份,而kerberos收到身份验证请求之后,便会出现错误信息,因为kerberos是用来验证域用户账号而非本地账号,此时lsa收到错误信息,会将其转发到gina,gina在将指定了msv1_0协议的lsa来验证身份,如果通过则完成本地交互式登陆。 |
| 说了这么多,到底跟终端用户登陆到服务器有什么关系.终端用户不是通过网络登陆吗?又不是本地登陆.终端顾名思义是客户通过键盘输入,发送指令到服务器,并没有大量的数据传送,最后通过客户机的显示器输出结果,实际上就是一个本地登陆的过程,所以采用的客户账号必须是本地账号。
现在就给大家提供具体的解决办法:win2000的得意之作gpo,即group policy object,win2000把winnt要通过修改注册表或者运行poledit.exe修改ntconfig.pol文件才能达到配置政策的目的,通过gpo来实现一个超强功能的中央集权的组政策,此政策是建立在活动目录(active directory)基础之上的,活动目录又是通过dns来定位服务的。所以如果要使用gpo,就必须在安装完 win2000 server+dns之后,通过dcpromo.exe程序来安装活动目录后,才能使用gpo.安装完活动目录之后,点击开始-程序-管理工具-active directory用户和计算机,出现图1画面
|
|
右击所在域控制器(本例是domain controllers)-属性-组政策,如图2所示(请特别注意这里,不是default domain policy)
|
| 点击default domain controlers policy,选择编辑进入gpo窗口。选择计算机配置-windows设置-本地策略-用户权利指派(如图4) |
| 关闭所有窗口。打开win2000的命令处理窗口,运行secedit /refreshpolicy machine_policy,在事件查看器去看一下组政策是否已成功运用.最后在客户机上用已添加的终端用户账号就能成功登陆.留下我的email:owlbird@163.com,希望与热爱电脑技术的朋友共同进步,欢迎大家有空去访问我的网站:owlbird.xiloo.com |
|
本文关键:win2000终端,citrix(sp3),交互式登陆
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)