2016-08-01 17 views
2

開始する前に、私は秘密をお知らせします: これはドメインコントローラ上にあります。 (この質問のコンテキストと範囲内で)ローカル管理者アカウントに発生した唯一の重要な変化とローカル管理者グループが最小限であると変更されませんので、上記のステートメントが原因無関係に打たれる* *管理者グループのSIDがメンバーアカウントに表示されない

差別化を必要とするほどの成果


私は他のサーバーのいずれかと、私はそれがDCにあるので、その背後にある理由がある賭けに喜ん上のトラブルのこの種を持っていませんでした。 *

*上記の理由と同じです。受け入れられた答えは、不一致を説明し、私の部分での監視であり、Windowsセキュリティまたはドメインコントローラのアーキテクチャ(フィーチャーを読む)ではありません。


私は、ローカル管理者であるアカウントからスクリプトが呼び出されたかどうかを確認する方法や、ローカル管理者グループ。

私はしかし、私はスクリプトを入力して、ローカルの管理者アカウントで呼び出されている場合は、私が見ることができることを知って、ローカルの管理者アカウントの名前を変更した:

(New-Object System.Security.Principal.NTAccount('reserved')).Translate([System.Security.Principal.SecurityIdentifier]).Value 

とSIDが-500に終了した場合、私は見ることができます。

私が呼び出しアカウントを入力して(より大きな範囲である)のAdministratorsグループの一部であるかどうかを確認するための条件を実行したときに問題が発生します。

PS> [bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).Groups -match "S-1-5-32-544") 
PS> False 

だったアカウントかを確認するには簡単なチェック使用:

PS> $env:username 
PS> reserved 

または不必要に複雑な方法(私は時々それを好むが):

PS> Write-Host ((Get-WmiObject Win32_Account | ?{$_.SID.Substring($_.SID.Length-4,4) -eq '-500'}).Caption).Split("\",2)[1] -fore GREEN 
PS> reserved 

と私もタイプ:

PS> net user reserved 

それは私Local Group Memberships *Administratorsを伝えます。

私はADUC(dsa.msc)をプルアップし、Builtinのコンテナを見て、Administratorsグループをダブルクリックします。私はMembersタグとloを選択して、実際にはreservedがメンバーです!

ので、要約:

  1. net user reservedを入力して、私はそれを確認することができた私はADUCで見て、予約を確認し、ローカル管理者グループ

  2. の一部であったメンバーでした組み込み管理者グループの

  3. 私は、SIDがで始まることを確認して、実際にローカル管理者アカウントであることを保証しましたで終了し、...-500

  4. で終了しました。これをさらに進めるには、と入力して、SIDがActive Directoryグループ "Administrators"と一致することを確認しました。私はGet-ADGroupMember -Identity "Administrators"とタイプし、reservedがリストされていることを確認しました(それはSIDが一致していました!)。

  5. 既知のAdministratorsグループSIDが(現在のWindows IDを取得して)そのアカウントのグループに見つかったかどうかを確認すると、そうではないと表示されます。

何が得られますか?

実際にローカル管理者グループのメンバであるが、そのアカウントのグループにSIDが見つからないという兆候が出るのはなぜですか?

+0

'[Security.Principal.WindowsIdentity] :: GetCurrent()'と '[Security.Principal.WindowsIdentity] :: GetCurrent()。Groups'の値があなたの考えであることを確認しましたか? –

+0

@AnsgarWiechersそれは '[bool]([System.Security.Principal.WindowsIdentity] :: GetCurrent())。Groups -match" S-1-5-32-544 ")'を実行したときに起こったことです。これは、現在のウィンドウのID(予約済み)を検索し、グループSIDを検索し、管理者(S-1-5-32-544)の既知のSIDが見つかったかどうかを確認していました。それは 'false'を返しました。 – Rincewind

答えて

0

私が何かを偶然に起こったと私はこの質問への答えを実現しました。

非常に簡単に - Powershellに関して - 管理者グループSID(S-1-5-32-544)の場合は、ここをクリックしてください。 )がユーザーのグループに表示されません。これは、スクリプトが管理者資格情報で実行されていないことを示す最初の行です。例えば

、私はタイプ:

([Security.Principal.WindowsIdentity]::GetCurrent()).Groups 

と私は管理者グループSIDは私がに署名していたアカウントがメンバーであるという事実のために知っているにもかかわらず、を表示されていません現在のPowershellプロセスに管理者の資格情報がないことを意味します。

Run As Administratorをクリックして上記と同様に入力すると、管理者グループSIDがGroupsに表示されます。

私が矛盾を経験した理由は、Powershellプロセスを管理者として実行していないためです。

要するに、現在のPowershellセッションに管理者の資格情報があるかどうかを確認する方法はいくつかあります。一つ目は、インターネットの周りに無数のウェブサイトで発見され、非常に一般的な(私はない書き込みこの1でした)されます。

:ここ

$myWindowsID = [Security.Principal.WindowsIdentity]::GetCurrent() 
$myWindowsPrincipal = New-Object Security.Principal.WindowsPrincipal($myWindowsID) 
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator 
if($myWindowsPrincipal.IsInRole($adminRole)) { 
    \\ TODO: Process is running as Administrator 
    Clear-Host 
    } else { 
     $newProcess = New-Object System.Diagnostics.ProcessStartInfo "Powershell" 
     $newProcess.Arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'" 
     $newProcess.Verb = "runas" 
     [System.Diagnostics.Process]::Start($newProcess) 
     exit 
     } 

は別の方法(I やった書き込み、この1)です

[Security.Principal.WindowsIdentity]::GetCurrent() | %{ 
    if($_.Groups -contains "S-1-5-32-544") { 
     \\ TODO: Process is running as Administrator 
     Clear-Host 
     } else { 
      Start Powershell -ArgumentList "& '$MyInvocation.MyCommand.Path'" -Verb runas 
      exit 
      } 
     } 

# The Foreach-Object (%) could be replaced with another pipeline filter 

多くの人がこの質問をしています。Powershellが多くのシステム管理者(特にプログラミングの背景を持たない人)に訴求していることから、私は本当にこれが他の人にとって便利だと思います。

1

コンピュータをドメインコントローラに昇格させると、コンピュータにローカルユーザーまたはグループがなくなります。メンバーコンピュータにはローカルユーザーとグループがあり、ドメインユーザーとグループを認証に使用することもできますが、DCではドメインオブジェクトのみが存在します。

も参照してください:https://serverfault.com/a/264327/236470

+0

ダング、分で私を打つ。 –

+0

それは正しいですが、それはリストの#4を説明しません。 – Rincewind

+0

@Rincewind '予約された 'ユーザーのプライマリグループは何ですか? – briantist

関連する問題