2008年12月4日星期四

修改系统SID的方法

1 前言
SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 2003 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。
2 SID的作用
用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给 Windows NT,然后 Windows NT 检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,Windows NT将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。

3 SID号码的组成
如果存在两个同样SID的用户,这两个帐户将被鉴别为同一个帐户,原理上如果帐户无限制增加的时候,会产生同样的SID,在通常的情况下SID是唯一的,他由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。

一个完整的SID包括:
 用户和组的安全描述
 48-bit的ID authority
 修订版本
 可变的验证值Variable sub-authority values
例:S-1-5-21-310440588-250036847-580389505-500
我们来先分析这个重要的SID。第一项S表示该字符串是SID;第二项是SID的版本号,对于2000来说,这个就是1;然后是标志符的颁发机构(identifier authority),对于2000内的帐户,颁发机构就是NT,值是5。然后表示一系列的子颁发机构,前面几项是标志域的,最后一个标志着域内的帐户和组。
4 SID重复引发的域管理问题
如果使用镜像工具拷贝建立的系统,会因为SID重复而导致加入到域后出现异常,如下图所示:

这样登录就会出现问题,故此,需要修改SID。
注:引发的其他问题及详细说明请参考NewSID4.1
5 修改SID
微软为了提供对批量安装操作系统(比如RIS、BDD)的支持,在收购SysInternals之后,推出了基于NTSID、修改SID及相关引用的工具――NewSID,目前最新版本是4.1。
下载地址:http://download.sysinternals.com/Files/NewSid.zip
关于4.1的说明请参考另外一篇帖子NewSID4.1,这里仅给出如何使用基于GUI的操作过程。


可以使用自己指定的SID,建立规则参考前面部分,默认是使用随机生成的SID,推荐使用。

附带了修改机器名称的功能。








修改完成后,NewSID会把系统中引用该SID的地方一一修改,安装的软件越多,修改时间就会越长;默认完成后自动重起。



6 注意事项
 尽量在副本系统创建之后就进行SID修改工作,不要等到加入域后再修改
 对已建立成为域控制器的机器(DC)未作过有效测试,使用要慎重。