1

我有一个独特的困境。

我正在开发一个测试用户帐户权限的类,我已经涵盖了大部分基础。但我最关心的是针对Null或测试一个SID.

我担心的原因是:

if(user != null)
{
   role.IsInRole(WindowsBuiltInRole.Administrator);
}

显然是一个简单的实现来演示,但是WindowsBuiltInRole检查会严格基于单个机器还是针对域?如果用户域帐户确实是管理员,它会成功测试吗?

或者测试五个或六个域SID令牌的更好方法是什么?其他用户帐户(例如网络服务帐户)是否会以相同的方式进行操作?确保令牌价值真实性的最佳方法是什么。

任何输入都会很棒。

4

2 回答 2

1

根据在以下位置找到的 WindowsBuiltInRole 枚举的定义:

WindowsBuiltInRole 枚举

WindowsBuiltInRole.Administrator 角色确实适用于计算机和域,没有限制。

WindowsBuiltInRole.PowerUser 将能够运行应用程序,但不能安装或卸载东西。

WindowsBuiltInRole.AccountAdministrator 可以管理帐户甚至更改权限,但不能进行域范围的更改(如在分布式部署中)。

WindowsBuiltInRole.BackupOperator 可以仅出于备份或还原文件的目的而覆盖安全限制。

WindowsBuiltInRole.Replicator 支持域中的文件复制。

这些不同的角色可能看起来很模糊,但可以推断出除了管理员之外的所有人都可以执行一些管理员任务,但不是全部。

于 2013-03-28T19:40:09.603 回答
1

WindowsBuiltInRole 枚举与 Windows SID完全对应,并且与与Windows 内置组关联的众所周知的 SIDS完全对应:Windows 操作系统中的知名安全标识符,所有 SID 都以“S-1-5-32-”开头.

枚举值的整数值对应的是sid中的最后一个数字,所以,因为WindowsBuiltInRole.Administrator是544,所以对应的是S-1-5-32-544。因此,您使用此代码检查的内容实际上是用户是否属于管理员组:

SID:S-1-5-32-544

姓名:管理员

描述:内置组。操作系统初始安装后,该组的唯一成员是管理员帐户。当计算机加入域时,域管理员组将添加到管理员组。当服务器成为域控制器时,Enterprise Admins 组也被添加到 Administrators 组中。

于 2013-03-30T08:33:16.930 回答