SID详解前言
SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 2000 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。

SID的作用
用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给 Windows NT,然后 Windows NT 检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,Windows NT将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。

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。然后表示一系列的子颁发机构,前面几项是标志域的,最后一个标志着域内的帐户和组。

SID的获得
开始-运行-regedt32-HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\Members,找到本地的域的代码,展开后,得到的就是本地帐号的所有SID列表。
其中很多值都是固定的,比如第一个000001F4(16进制),换算成十进制是500,说明是系统建立的内置管理员帐号administrator,000001F5换算成10进制是501,也就是GUEST帐号了,详细的参照后面的列表。
这一项默认是system可以完全控制,这也就是为什么要获得这个需要一个System的Cmd的Shell的原因了,当然如果权限足够的话你可以把你要添加的帐号添加进去。
或者使用Support Tools的Reg工具:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

还有一种方法可以获得SID和用户名称的对应关系:
1. Regedt32:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion \ProfileList
2. 这个时候可以在左侧的窗口看到SID的值,可以在右侧的窗口中ProfileImagePath看到不同的SID关联的用户名,
比如%SystemDrive%\Documents and Settings\Administrator.momo这个对应的就是本地机器的管理员SID
%SystemDrive%\Documents and Settings\Administrator.domain这个就是对应域的管理员的帐户

另外微软的ResourceKit里面也提供了工具getsid,sysinternals的工具包里面也有Psgetsid,其实感觉原理都是读取注册表的值罢了,就是省了一些事情。

SID重复问题的产生
安装NT/2000系统的时候,产生了一个唯一的SID,但是当你使用类似Ghost的软件克隆机器的时候,就会产生不同的机器使用一个SID的问题。产生了很严重的安全问题。
同样,如果是重复的SID对于对等网来说也会产生很多安全方面的问题。在对等网中帐号的基础是SID加上一个相关的标识符(RID),如果所有的工作站都拥有一样的SID,每个工作站上产生的第一个帐号都是一样的,这样就对用户本身的文件夹和文件的安全产生了隐患。
这个时候某个人在自己的NTFS分区建立了共享,并且设置了自己可以访问,但是实际上另外一台机器的SID号码和这个一样的用户此时也是可以访问这个共享的。

SID重复问题的解决
下面的几个试验带有高危险性,慎用,我已经付出了惨痛的代价!
微软在ResourceKit里面提供了一个工具,叫做SYSPREP,这个可以用在克隆一台工作站以前产生一个新的SID号码。 下图是他的参数

这个工具在DC上是不能运行这个命令的,否则会提示

但是这个工具并不是把所有的帐户完全的产生新的SID,而是针对两个主要的帐户Administrator和Guest,其他的帐号仍然使用原有的SID。

下面做一个试验,先获得目前帐号的SID:
S-1-5-21-2000478354-688789844-839522115
然后运行Sysprep,出现提示窗口:

确定以后需要重启,然后安装程序需要重新设置计算机名称、管理员口令等,但是登陆的时候还是需要输入原帐号的口令。
进入2000以后,再次查询SID,得到:
S-1-5-21-759461550-145307086-515799519,发现SID号已经得到了改变,查询注册表,发现注册表已经全部修改了,当然全部修改了。

另外sysinternals公司也提供了类似的工具NTSID,这个到后来才发现是针对NT4的产品,界面如下:

他可不会提示什么再DC上不能用,接受了就开始,结果导致我的一台DC崩溃,重启后提示"安全账号管理器初始化失败,提供给识别代号颁发机构的值为无效值,错误状态0XC0000084,请按确定,重启到目录服务还原模式...",即使切换到目录服务还原模式也再也进不去了!
想想自己胆子也够大的啊,好在是一台额外DC,但是自己用的机器,导致重装系统半天,重装软件N天,所以再次提醒大家,做以上试验的时候一定要慎重,最好在一台无关紧要的机器上试验,否则出现问题我不负责哦。另外在Ghost的新版企业版本中的控制台已经加入了修改SID的功能,自己还没有尝试,有兴趣的朋友可以自己试验一下,不过从原理上应该都是一样的。
文章发表之前,又发现了微软自己提供的一个工具"Riprep",这个工具主要用做在远程安装的过程中,想要同时安装上应用程序。管理员安装了一个标准的公司桌面操作系统,并配置好应用软件和一些桌面设置之后,可以使用Riprep从这个标准的公司桌面系统制作一个Image文件。这个Image文件既包括了客户化的应用软件,又把每个桌面系统必须独占的安全ID、计算机账号等删除了。管理员可以它放到远程安装服务器上,供客户端远程启动进行安装时选用。但是要注意的是这个工具只能在单硬盘、单分区而且是Professional的机器上面用。

下面是SID末尾RID值的列表,括号内为16进制:

Built-In Users
DOMAINNAME\ADMINISTRATOR
S-1-5-21-917267712-1342860078-1792151419-500 (=0x1F4)

DOMAINNAME\GUEST
S-1-5-21-917267712-1342860078-1792151419-501 (=0x1F5)
Built-In Global Groups
DOMAINNAME\DOMAIN ADMINS
S-1-5-21-917267712-1342860078-1792151419-512 (=0x200)

DOMAINNAME\DOMAIN USERS
S-1-5-21-917267712-1342860078-1792151419-513 (=0x201)

DOMAINNAME\DOMAIN GUESTS
S-1-5-21-917267712-1342860078-1792151419-514 (=0x202)
Built-In Local Groups
BUILTIN\ADMINISTRATORS S-1-5-32-544 (=0x220)
BUILTIN\USERS S-1-5-32-545 (=0x221)
BUILTIN\GUESTS S-1-5-32-546 (=0x222)
BUILTIN\ACCOUNT OPERATORS S-1-5-32-548 (=0x224)
BUILTIN\SERVER OPERATORS S-1-5-32-549 (=0x225)
BUILTIN\PRINT OPERATORS S-1-5-32-550 (=0x226)
BUILTIN\BACKUP OPERATORS S-1-5-32-551 (=0x227)
BUILTIN\REPLICATOR S-1-5-32-552 (=0x228)
Special Groups
\CREATOR OWNER S-1-3-0
\EVERYONE S-1-1-0
NT AUTHORITY\NETWORK S-1-5-2
NT AUTHORITY\INTERACTIVE S-1-5-4
NT AUTHORITY\SYSTEM S-1-5-18
NT AUTHORITY\authenticated users S-1-5-11 *.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

转载于:https://blog.51cto.com/windows/14315

OS 中的SID(安全标识)相关推荐

  1. 仓库货位卡标识牌_仓储管理中的货位与标识管理

    在现实的仓储管理中,我们常常听说有发错料.发串料的情况发生.究其原因,我认为这其中难免有保管人员粗心大意的主观成分,而最主要的.客观的因素应该是货位与标识不清.打个比方,我们指定了一个仓管员去某个货位 ...

  2. Vista OS 中添加网络中的非Vista OS共享的打印机

    需要首先在Vista OS中安装目标打印机的Vista驱动程序,其他步骤没什么特别.否则会提示"内存不足"这样的消息. 转载于:https://www.cnblogs.com/Fe ...

  3. OS中阻塞与挂起的区别sleep()的实现原理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xpy870663266/article ...

  4. OS中atomic的实现解析

    OS中atomic的实现解析 转自:http://my.oschina.net/majiage/blog/267409  摘要 atomic属性线程安全,会增加一定开销,但有些时候必须自定义atomi ...

  5. dc/os_DC / OS中具有Java和数据库应用程序的服务发现

    dc/os 该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话. 为什么要进行服务发现? 应用程序通常由多个组件组成,例如应用程序服务器,数据库,Web服务器,缓 ...

  6. DC / OS中具有Java和数据库应用程序的服务发现

    该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话. 为什么要进行服务发现? 应用程序通常由多个组件组成,例如应用程序服务器,数据库,Web服务器,缓存和消息传递 ...

  7. python的os库的remove可以删除只带有只读属性的_扩展库os中的方法remove()可以删除带有只读属性的文件。(2.0分)_学小易找答案...

    [填空题]已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为__.(2.6分) [填空题]假设已从标准库functools导入reduce()函数,那么表达式 reduc ...

  8. [Chromium中文文档]Chrom{e,ium}{,OS}中的硬件视频加速

    Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...

  9. 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速

    Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...

  10. uc/OS-II操作系统:uc/OS中的任务_上(如不懂——>请收下我的膝盖)

    uc/OS中任务的学习目录 注:本章未写完的在后面章节会继续书写 (1)任务的基本概念 (2)任务堆栈 (3)任务控制块及任务控制块链表 (4)任务就绪表及任务调度 (5)任务的创建 (6)任务的挂起 ...

最新文章

  1. 关于导航按钮在其他尺寸下显示问题
  2. .NET Core 2.0迁移技巧之web.config配置文件
  3. 解决pycharm运行Flask指定ip、端口更改无效
  4. 重磅开源 | 机器学习圣经《模式识别与机器学习》中文版PDF!
  5. Windows 下的Dig的安装及应用集合(一)
  6. BZOJ2795: [Poi2012]A Horrible Poem
  7. 段描述符和段选择符解析
  8. Atitit web 之道 艾龙著 Atitit web 之道 艾龙艾提拉著v2 saa.docx 1. 第1章 Web编程基础知识 (1) 3 1.1. 1.1 什么是Web (1) 3 1.2.
  9. python画素描画_画画了,画画了,几行Python就成一幅素描画
  10. socket通信需要网线连接吗_socket方式实现网络通信
  11. informix linux 下载,linux安装informix
  12. 多实例学习PCNN在关系抽取中的应用
  13. OpenCV图像阈值:简单阈值、自适应阈值、OTSU、TRIANGLE
  14. 红米note4 android8.0,红米Note 4首个安卓8.0刷机包放出,开发者:可日常使用
  15. 武汉市10月双软认定好处、认定条件及9月认定名单公示
  16. Android 和 iOS APP 测试的区别
  17. 程序设计训练课程设计
  18. “富贵树”身价十五万,湖南小伙返乡创业,一年卖出800多万
  19. osgi框架基础原理与实例一
  20. 【算法】求解钱币兑换问题

热门文章

  1. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
  2. linux压缩文件夹
  3. 算法笔记-------基数排序
  4. 两个整形变量值交换的五种境界
  5. Android RootTrustManager 证书校验简单分析
  6. 计算机软考程序员客观题,历年计算机软考程序员部分选择题真题重点
  7. H.264标准(一)MP4封装格式详解
  8. Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流
  9. webstrom html校验css语法,webstorm ECMAScript 6 语法检查
  10. html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制