◆ 实验小结
从实验结果表2~表7中可以得出这样的结论:
(1)当给一个帐户“显式”定义登录权利时,会在HKLM\SECURITY\Policy\Accounts下创建一个UserSID注册表项,UserSID是该帐户的SID,可以用Psgetsid等命令工具确定。
(2)登录权利和该UserSID注册表项下的ActSysAc子键所确定(与其“Default”键值有关)。该键值的结构比较简单,由四个字节的16进制数组成。这六个登录权利和HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据之间的对应关系如表8所示。
|
显示名称 |
字符常量 |
ActSysAc下的“Default”键值 |
|
“拒绝”登录权利 |
|
拒绝本地登录 |
SeDenyInteractiveLogonRight |
40 00 00 00 |
|
拒绝从网络访问这台计算机 |
SeDenyNetworkLogonRight |
80 00 00 00 |
|
通过终端服务拒绝登录 |
SeDenyRemoteInteractiveLogonRight |
00 08 00 00 |
|
“允许”登录权利 |
|
在本地登录 |
SeInteractiveLogonRight |
01 00 00 00 |
|
从网络访问此计算机 |
SeNetworkLogonRight |
02 00 00 00 |
|
通过终端服务允许登录 |
SeRemoteInteractiveLogonRight |
00 04 00 00 |
表8 登录权利和ActSysAc子键的对应关系
(3)进一步的实验发现,如果同时给该帐户赋予多个登录权利,则会将应的数值数据进行简单累加。
举个例子,如果给Peter帐户同时赋予“拒绝本地登录”、“拒绝从网络访问这台计算机”这两个登录权利,则HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据就是“c0 00 00 00”(等于40 00 00 00加上80 00 00 00)。
?另一个例子,如果给Peter帐户同时赋予“拒绝从网络访问这台计算机”、“在本地登录”这两个登录权利,则HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据就是“81 00 00 00”(80 00 00 00加上01 00 00 00)。
(4)对于管理员成员帐户来说,只需删除HKLM\SECURITY\Policy\Accounts\UserSID注册表项,即可将其登录权利恢复到默认值。
对于所有帐户来说,如果确认拥有某个登录权利,现在需要要清除该登录权利,只需将“Default”键值的数值数据减去表8中的该权利所对应的数值即可。举个例子,某个帐户的“Default”键值的数值数据为“81 00 00 00”,则可以确认该帐户拥有“在本地登录”的权利,所以要清除“在本地登录”权利,只需将“81 00 00 00”减去该权利所对应的“01 00 00 00”即可(结果等于“80 00 00 00”)。
(5)对于Windows 2000进行相同实验,结果类似(仅针对本文所讨论的六个登录权利)。
(6)由于Windows XP默认给Administrators组帐户“显式”赋予“在本地登录”、“从网络访问此计算机”和“通过终端服务允许登录”这三个登录权利,所以默认情况下Administrators组帐户的对应注册表键值HKLM\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc存在,其“Default”键值的数值数据为“03 04 00 00”。
实例应用
了解了登录权利和注册表键值的对应关系,可以用来进行一些很有趣、也很实用的操作。
◆ 工具软件
本部分需要涉及到以下三个工具软件:
(1)Ntrights(必须):设置帐户的登录权利,Windows 2003 Resource Kit Tools
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd
(2)ShowPriv(可选):显示包含特定权利的用户帐户,Windows 2003 Resource Kit Tools
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd
(3)Psgetsid(可选):了解用户帐户名称和SID的相互对应关系。
http://www.sysinternals.com/Utilities/Psgetsid.html
◆ 拒绝Administrators本地登录的权利(Windows XP Professional)
和Windows 2000不同,在Windows XP下,不能对Administrators组帐户设置“拒绝本地登录”的登录权利,也不能对所有的管理员帐户设置“拒绝本地登录”的登录权利。但是有时候我们可能需要禁止Administrators本地登录,例如这是一台公用的计算机,不希望有管理员可以进行本地登录(管理维护的时候,可以通过远程桌面进行),可以采用以下两种方法:
(1)在命令提示符下运行以下命令,即可给Administrators组帐户赋予“拒绝本地登录”的登录权利:
Ntrights –u Administrators +r SeDenyInteractiveLogonRight
无需重启或者注销计算机,登录权利立即生效。
(2)也可以直接修改注册表,打开注册表编辑器,定位到如下注册表分支:
HKLM\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc
将ActSysAc子键的“Default”键值的数值数据修改为“4* ** ** **”(*位的数值保持不变)。
重启或者注销计算机,登录权利即可生效。
◆ 给Windows XP Home Edition指定登录权利
由于Windows XP Home Edition无法通过修改本地安全策略指定帐户的登录权利,但是我们照样可以达到目的。举两个例子。
(1)假设要禁止Windows XP Home Edition的管理员帐户Peter本地登录,可以在命令提示符下运行以下命令:
Ntrights –u Peter +r SeDenyInteractiveLogonRight
注意 由于默认情况下管理员帐户没有“显式”分配登录权利,所以Peter帐户没有对应的UserSID注册表项,不能通过修改注册表来实现目的。
(2)要给Administrators组帐户设置“拒绝本地登录”的的登录权利,和Windows XP Professional的方法完全一样,可以借助Ntrights命令或者修改注册表的方法来实现。
◆ Administrators组帐户禁止本地登录,如何恢复?
如果不小心在Windows 2000/XP下设置禁止Administrators本地登录,恢复起来不外乎两类方法,一类是在本地计算机上进行操作,另一类是借助网络计算机进行操作。
为了方便描述,这里假设故障计算机的计算机名为Test。
1.在本地计算机上进行操作
(1)故障恢复控制台
进入故障恢复控制台,将“%systemroot%\repair\security”文件覆盖“%systemroot%\system32\config\security”文件。“%systemroot%\repair\security”是Windows 2000/XP初始安装时的注册表安全配置单元文件,可以将所有帐户的登录权利恢复到初始安装的状态。
(2)替换secedit.sdb
登录权利的设置信息除了存放在注册表里之外,也存放在安全数据库%systemroot%\security\Database\secedit.sdb里,所以可以用一台正常计算机的secedit.sdb文件替换即可(可以借助Windows Me启动盘+NTFSDOS Pro软盘访问故障计算机,进行修复)。
2.借助网络计算机进行操作
要能够借助网络计算机进行修复,故障计算机最起码要满足以下条件:
防火墙正确配置
Windows XP帐户的密码非空(禁止空密码网络登录)
该帐户和所属的组都没有设置“拒绝从网络访问访问这台计算机”的登录权利
该帐户或者所属的组具有“允许从网络访问这台计算机”的登录权利
“Remote Registry”服务必须已经启动(如果采用注册表恢复)
(1)远程注册表修改键值
首先在命令提示符下运行以下命令:
net use \\RemoteComputerName\ipc$ Password /user: RemoteComputer\UserName
然后建立到故障计算机的空连接,以便客户端能够拿到远程故障计算机的帐户凭据。
远程连接注册表,获取HKEY_LOCAL_MACHINE\SECURITY权限
定位到以下注册表子键,确保将其“Default”键值的数值数据修改为“0* ** ** **”(*位的数值保持不变):
HKEY_LOCAL_MACHINE\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc
重启Test计算机即可。
(2)远程运行Ntrights命令
在命令提示符下运行以下命令:
Ntrights –m \\Test –u Administrators –r SeDenyInteractiveLogonRight
(3)能否Telnet故障计算机,利用secedit命令导入安全模板等方法进行恢复?
不能,因为Telnet等同于本机登录,系统会提示拒绝登录。
◆ Administrators组帐户同时禁止本地登录和网络登录,如何恢复?
由于Administrators组帐户禁止网络登录,这就阻断了通过网络计算机进行修复的可能性,所以必须借助本地恢复的方法。
(1)进入故障恢复控制台,将“%systemroot%\repair\security”文件覆盖“%systemroot%\system32\config\security”文件。
(2)也可以借助Windows Me启动盘+NTFSDOS Pro软盘访问故障计算机的启动分区,复制出其下的“%systemroot%\system32\config\security”文件,然后在一台正常的计算机上加载该security配置单元,进行修改以后,重新复制回原来的路径即可。