Windows域帐户SID和SID

时间:2016-07-25 04:29:18

标签: active-directory passwords windows-server-2012 identifier sid

我在一些JNI库上编码,我不知道他们是如何做的详细信息,但lib的输出是带有sid和sids的windows域用户信息。 ..它们看起来如下所示

sids: [
  "S-1-5-21-2923429462-2395316905-2569861443-1123",
  "S-1-5-32-545",
  "S-1-5-2",
  "S-1-5-5-0-79699478",
  "S-1-5-11",
  "S-1-1-0",
  "S-1-5-15",
  "S-1-18-1",
  "S-1-5-21-2923429462-2395316905-2569861443-513"
],

sid: "S-1-5-21-2923429462-2395316905-2569861443-1123"

问题

  • 我是否可以在没有密码的情况下获取信息,但仅限用户使用 ID?

  • 信息是否可更改?

  • 什么是SID ...我认为那里只有一个安全标识符。

1 个答案:

答案 0 :(得分:0)

我会抓住它:

我知道您使用的是Java Native Interface,但我不确定您使用的是其他语言。如果它与Active Directory一起使用,那么Powershell非常适合它,但我不确定它如何与JNI一起使用。

无论如何,这是我能收集到的。每个帐户都有一个特定的安全标识符,称为SID。公共帐户有着名的SID(例如,管理员)。即使本地帐户和组也有SID,就像在Active Directory中的任何一样。

如果您想将SID转换为帐户,那不是问题。如果你没有使用Powershell,至少这可能会给你一个起点:

$SID = New-Object System.Security.Principal.SecurityIdentifier("SID_GOES_HERE")
$user = $SID.Translate([System.Security.Principal.NTAccount])
$user.Value

您可以将每一行放入这三个步骤中,将其放入如下函数中:

Function SIDtoUser($SIDint) {
    $SID = New-Object System.Security.Principal.SecurityIdentifier($SIDint)
    $user = $SID.Translate([System.Security.Principal.NTAccount])
    return $user.Value
    }

将所有SID收集到一个数组中并像这样运行:

$SIDArray | %{
    SIDtoUser($_)
    }

我希望这会有所帮助。如果我可以进一步协助,请告诉我。