计算机技術文摘

2000中“拒绝登录”的解决办法(摘)

问:在2000(也仅是2000)中由于禁止本地登录权利而导致的所有用户、管理员无法登录,如何解决?

答:在安全策略/本地策略/用户权利分配下有两条策略:

  • 拒绝本地登录,默认为“未定义”。
  • 允许在本地登录,其默认值分别为:
    • 本地计算机策略:Administrators、Backup Operators、Power Users、Users
    • 默认域的策略:未定义
    • 默认域控制器的策略:Administrators、Account Operators、Backup Operators、Server Operators、Print Operators、IUSR_dcname

说明:如果在同一级别上、对同一对象(用户或组)、同时设置了“允许”和“拒绝”,“拒绝”权利的优先级别高。也就是说二者冲突时,“拒绝”权利生效。
  假设不小心或干脆有人使坏在拒绝本地登录上设置了所有人或管理员,又或者在允许登录上把管理员给删掉了。不论哪一种情况都会导致管理员无法登录,出错提示为:“此系统的本地策略不允许您采用交互式登录”,也就没办法将策略设置改回正常了。
  这种情形看起来像一个解不开的"死结":要解除禁止本地登录的组策略设置,必须以管理员身份本地登录;要以管理员身份本地登录,就必须先解除禁止本地登录的组策略设置。

问题还是有办法解决的,分别讨论如下:

一、被域策略和域控制器策略所阻止

  显然你应该是被域策略和域控制器策略同时阻止了登录权利,因为:
1、如果只是域策略阻止,由于默认域控制器的策略上允许Administrators登录,而域控制器(Domain Controllers)是个OU,前面我们讲过组策略的LSDOU原则[注1],所以管理员可以登录到DC上,把策略改回去。

2、如果只是域控制器的策略阻止,它只对DC生效。管理员可以在域内的其它计算机上登录到域,把策略改回去。
  要解决被域策略和域控制器策略同时阻止,首先我们来回顾一下前面讲过的“具体的策略设置值存储在GPT中,位于DC的winnt\sysvol\sysvol中,以GUID为文件夹名。”[注2]其中安全设置部分保存在DC的winnt\sysvol\sysvol\你的域名\Policies\策略的 GUID\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf这个安全模板文件中。它实质就是一个文本文件,可利用记事本进行编辑。

说明:前面我们介绍过,默认域的策略、默认域控制器的策略使用固定的GUID,分别是:

  • 默认域的策略的GUID为31B2F340-016D-11D2-945F-00C04FB984F9
  • 默认域控制器的策略的GUID为6AC1786C-016F-11D2-945F-00C04FB984F9。

可以利用C盘的隐含共享C$,或winnt\sysvol\sysvol的共享sysvol连过去,直接编辑,具体操作如下:
1、在另一台联网的计算机(Win9X/2000/XP均可)上,使用域管理员账号连接到DC。
2、利用记事本打开GptTmpl.inf文件。
3、找到文件中[Privilege Rights]小节下的拒绝本地登录“SeDenyInteractiveLogonRight”和允许在本地登录“SeInteractiveLogonRight”关键字,进行编辑即可。如:

  • 使SeDenyInteractiveLogonRight所等于的值为空。
  • 保证SeInteractiveLogonRight= *S-1-5-32-544,……

4、保存退出。

说明:
A、关于各SID所表示的意义,参见前面的表格[注3]。SID前面的*要保留,系统执行时才不会其后面的SID当作具体的用户/组的名字。
B、如果域中不止一台DC,为保证DC同步时刚才所做的修改最终生效(原理同授权恢复),需要:
(1)打开winnt\sysvol\sysvol\你的域名\Policies\刚刚所修改策略的 GUID\ GPT.INI文件
(2)找到文件中的[General]小节下的“Version”,手动将其值增大,通常是加10000。这是我们修改的这个组策略对象的版本号,版本号提高后可以保证我们的更改被复制到其它DC上。
(3)保存退出。

5、重新启动DC,域策略将被刷新。
说明:也可以在DC上运行secedit /refreshpolicy machine_policy /enforce刷新策略,这样就不必重启DC了。但需要用到telnet,细节参考前面telnet命令和接下来的内容。
6、以域管理员身份在DC上正常登录到域,重新设置安全域策略中的相关项目。

二、被本地安全策略所阻止

  很多人都会想到利用MMC远程管理功能,重设目标机的安全策略。具体操作如下:
开始/运行/MMC/添加/组策略/浏览/计算机/另一台计算机,如果有权限的话,你会发现你能找到并管理其它的策略设置,但是就是没有安全策略等项目出现在列表中。
  这是由于在Windows2000中,不支持对计算机本地策略的安全设置部分进行远程管理。而且本地安全策略设置的实现也与域策略不同,它存放在一个二进制的安全数据库secedit.sdb。
  那么我们该怎么办呢?我们可以使用telnet连接到故障计算机上,利用前面我们介绍过secedit命令导出安全设置到安全模板,即扩展名为.inf 的文本文件中。利用记事本编辑后,再利用secedit命令将修改后的安全设置配置给计算机,这样也就大功告功了。但如果故障计算机上的telnet服务没有启动,那么我们应该首先把故障计算机上telnet服务启动起来,才能连过去。
说明:因为telnet服务的启动类型,默认为手动,所以正常情况下它是不会启动的。此时连过去的出错信息为:正在连接以xxx不能打开到主机的连接,在端口23:连接失败。

综上所述,具体解决办法如下:

1、在另一台联网的计算机(2000/XP/03均可)上,修改其管理员密码,使用户名和口令均与故障计算机上的相同。(这主要为了方便,若在连接或使用的时候输入目标计算机上的用户名和口令,也可以)
2、注销后,重新登录进来。
3、我的电脑/右键/管理,打开计算机管理。
4、在计算机管理上/右键/连接到另一台计算机:故障计算机IP。
5、在服务下找到telnet,手动将它启动起来。

接下来使用telnet连接过去

6、开始/运行:cmd,键入telnet 目标IP
7、在C:\>提示符下,键入secedit /export /cfg c:\sectmp.inf,导出它的当前安全设置。
8、点击开始/运行:\\目标IP\C$,双击c:\sectmp.inf,用记事本打开。
9、编辑sectmp.inf文件,具体同前面情况一的步骤3
10、回到步骤7的命令窗口,键入secedit /configure /db c:\sectmp.sdb /CFG c:\sectmp.inf将修改后的设置值,配置给计算机。
11、运行secedit /refreshpolicy machine_policy /enforce刷新策略,这样就不必故障计算机了。
12、以本地管理员身份在故障计算机上正常登录到域,重新设置安全域策略中的相关项目。

最后说明一下:
  
对于XP/03不存在上述问题,微软已经修正了这个问题。用户不能阻止所有人或管理员登录,在图形界面下根本设不上;使用其它手段强行设上了也不起作用。因此大家可以想一想,针对上面第一种情况,实际上可以加一台XP/03到2000域,在XP/03上登录到域,将其解开。
  本例的实际排错意义并不大,但建议大家最好还是能把这个实验做一下,因为它涉及到了很多知识点,如:基于域安全策略、本地安全策略的实施原理,组策略及其优先级,权利、 SID,还有同名同口令帐户登录、telnet、secedit工具的使用等等。再有大家也可以做一下实验,既然我们能通过网络解开,同样也能通过网络设上。

[注1]:组策略设置的默认优先级是:LSDOU原则,本地策略优先级最低。可通过阻止继承(将阻止所有策略继承)、禁止替代(也就是必须继承,针对某个具体的GPO来设置)、组策略筛选器(实质为GPO权限)改变默认的优先级。

[注2]组策略对象(GPO)包括组策略容器(GPC)和组策略模板(GPT)两部分。GPC位于AD用户和计算机/System/Policies(需要选中查看下的高级功能),仅是GPO的属性和版本信息,计算机通过GPC来查找GPT。具体的策略设置值存储在GPT中,位于DC的windows\sysvol \sysvol下,以GUID为文件夹名。注意安装AD系统自带的两个GPO,使用固定的GUID,分别是:

  • 默认域的策略的GUID为31B2F340-016D-11D2-945F-00C04FB984F9
  • 默认域控制器的策略的GUID为6AC1786C-016F-11D2-945F-00C04FB984F9。
[注3]
  安全标识符 (SID)。形如:
       S-1-5-21-1553226038-2352558368-427082893-500
  其中S-1-5表示NT Authority(标识符颁发机构);上例中的21-1553226038-2352558368- 427082893为这个域的SID(每个域不同),在这个位置还可能是32(表示本地/域内置的本地组,都只能在DC/本机上使用,重复无妨,所以都是32),也可能是本机的SID;后面跟的500表示administrator用户。






SID

名称

描述

S-1-5-域-500

Administrator

管理员帐户

S-1-5-域-501

Guest

供来宾访问计算机或访问域的内置帐户

S-1-5-域-502

krbtgt

密钥分发中心(KDC) 服务使用的服务帐户

其它还有:Domain Admins(512),Domain Users(513),Domain Guests(514)。用户帐户、全局组可在林内或有信任关系的其它域使用,所以域间不可重复。

S-1-5-域-515

Domain Computers

一个包括加入域的所有客户端和服务器的全局组

S-1-5-域-516

Domain Controllers

一个包括域中所有域控制器的全局组。
默认情况下,新的域控制器将添加到该组中。

S-1-5-根域-518

Schema Admins

域为混合模式时为全局组,纯模式时为通用组。默认成员林根域的 Administrator。被授权更改AD架构。

S-1-5-根域-519

Enterprise Admins

域为混合模式时为全局组,纯模式时为通用组。
默认成员林根域的 Administrator。
被授权更改AD林结构,例如添加子域,删除域。

S-1-5-32-544

Administratrs

域/本地管理员组,都只能在DC/本机使用,重复无妨。

其它还有:Users(545),Guests(546),Power Users (547),Account Operators(548),Server Operators(549),Print Operators(550),Backup Operators (551),Replicators(552),Remote Desktop Users(555)。都只能在本域内使用,域间重复无妨。

S-1-1-0

Everyone

包括所有用户(甚至匿名用户和来宾)的组。成员身份由操作系统控制。在03中管理员可决定是否包括Guest。

S-1-5-6

Service

一个包括所有作为服务登录的安全主体的组。成员身份由操作系统控制。

S-1-5-7

Anonymous

一个包括所有以匿名方式登录的用户的组。成员身份由操作系统控制。

S-1-5-18

Local System

操作系统使用的服务帐户。

S-1-5-19

Local Service

本地服务

S-1-5-20

Network Service

网络服务


一台在电信托管的独立服务器2000 Server,由于误操作将Users组给拒绝登录了,导致管理员无法登录。而且原来基于安全考虑:将服务器上的telnet的默认端口TCP:23给封掉了,该如何解决?

  这个问题的实质就是:如何远程修改Telnet服务器所用的默认端口?下面针对这个问题,我们分别就2000和03讨论如下。(前面我们讲过,03/XP不存在管理员被拒绝登录的情形)

一、对于2000和03服务器
  我们可以利用2000/03注册表编辑器的“连接网络注册表”的功能来进行修改,具体操作如下:

1、在另一台联网的计算机(2000/XP/03均可)上,修改其管理员密码,使用户名和口令均与故障计算机上的相同。
2、注销后,重新登录进来。
3、开始/运行:regedit
4、文件,连接网络注册表:故障计算机的IP(若用的是XP/03,此时可能还会要求验证,输入用户名computername\administrator和口令即可)
5、搜索:(2000中名称、类型、数据;03中项、、数据)类型/值:telnetport,具体位置2000:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0下
5、将telnetport的默认值由23(十进制数)改为0-1024范围内的任意值即可。

接下来续前文的操作:

3、我的电脑/右键/管理,打开计算机管理。
4、在计算机管理上/右键/连接到另一台计算机:故障计算机IP。
5、在服务下找到telnet,手动设置启动类型:自动或手动,将它启动起来。

接下来使用telnet连接过去
……………………

二、若目标为03服务器还可利用tlntadmn.exe命令

  我们先来说一下2000为什么不能利用tlntadmn。
1、2000的tlntadmn命令只能对本地机操作,不支持远程。
2、若在03或XP机上,对2000目标操作。由于2000和03/XP的telnet版本不同,系统不让连。

  目标为03,则在一台03/XP计算机上:

1、开始/运行:cmd,键入tlntadmn 目标IP config port=1022,将提示“设置更新成功”

接下来,可以

2、我的电脑/右键/管理,打开计算机管理。
3、在计算机管理上/右键/连接到另一台计算机:故障计算机IP。
4、在服务下找到telnet,设置启动方式为自动或手动,并将它启动起来。
说明:使用 tlntadmn 目标IP start,也可启动telnet服务。

接下来使用telnet连接过去

posted on 2005-09-19 17:24 计算机技术博客 阅读(308) 评论(0)  编辑 收藏 引用

公告

http://www.nuanbb.com

导航

常用链接

随笔分类(255)

常用链接