web-dev-qa-db-ja.com

任意のユーザーのWindows特権を一覧表示する方法

すべてのユーザーアカウントの権限(SeShutDownPrivilegeなど)を一覧表示するスクリプトを記述しようとしています。スクリプトを標準ユーザーとして実行できるのであればそれが望ましいですが、必要に応じて管理者アカウントとして実行することもできます。これまでに試したアプローチは次のとおりです。

  • tokenszを使用して(から https://blogs.technet.Microsoft.com/askds/2007/11/02/whats-in-a-token/ ):機能します(tokensz /compute_tokensize /dump_groups)for現在ログインしているユーザー。しかし、ドメイン管理者としてもログインしているときに別のユーザー(tokensz /compute_tokensize /dump_groups /user:[another.user])を試すと、エラーSEC_E_LOGON_DENIEDが発生します

  • whoami /allは機能しますが、現在ログインしているユーザーのみが対象です

  • ntrights.exeは、権限を一覧表示できず、追加と削除のみができるようです。

  • secedit /export /areas USER_RIGHTS /cfg out.txt:すべての権限とその権限を持つSIDを一覧表示しますが、その一覧は不完全に見えます。 tokenszからの出力は、SeShutdownPrivilegeを持つユーザーJohn.Smithを示していますが、seceditに対するSeShutdownPrivilegeからの出力は、John.Smithがメンバーではないグループをリストしています。

ポータブル実行可能ファイル(tokensz.exentrights.exeなど)とビルトインユーティリティを使用できますが、アプリケーションや拡張機能をインストールできません

8
A G

このタスクを実行するには、 AccessChk を使用できます。

Accesschk “domain\user” -a *は、特定のドメインユーザーのすべての権限を一覧表示します。

PowerShellスクリプト内でこのプログラムを呼び出し、結果をテキストファイルに連結してから、知りたいアクセス許可のみを除外できます。

5
Ramhound

PowerShellスクリプトを探している人にとって、これはそれを行うべきです:

gwmi Win32_UserProfile | foreach-object {
 $sid = New-Object System.Security.Principal.SecurityIdentifier($_.SID)
 $user = $sid.Translate([System.Security.Principal.NTAccount])
 $username = $user.Value
 $username
 $chkCmd = "accesschk """ + $username + """ -a * -q"
 iex $chkCmd
 ""
}

プロファイルを持っているユーザーのリストローカルマシン上を取得し、SIDからユーザー名を特定し、Ramhoundの推奨に従ってaccesschkを呼び出します。各ユーザーのレコードは、DOMAIN\user形式のユーザー名で始まり、行に各権利が含まれ、空白行で終わります。 (SID変換は この記事 の厚意によるものです。)リダイレクト演算子>を使用して、その内容をファイルにダンプできます。

AccessChkの注意点は、ローカル管理者権限を持たないドメインユーザーに対して空のリストを生成するように見えることです。したがって、ドメイン内およびマシン上のすべての既知のユーザーについて上記の情報を生成するこのバージョンは少し不完全ですが、ツールの将来のバージョンで役立つ可能性があります。

gwmi Win32_UserAccount | foreach-object {
 $username = $_.Caption
 $username
 $chkCmd = "accesschk """ + $username + """ -a * -q"
 iex $chkCmd
 ""
}

seceditが何について話しているのか疑問に思っている場合は、ユーザー権利の割り当てで権限が割り当てられているプリンシパルのリスト(SID形式)を取得しているだけです(secpol.mscを参照)。したがって、通常、特定のユーザーではなく、ユーザーや管理者などのグループのSIDが表示されます。

5
Ben N

この script が役立つ場合があります。純粋なPowerShellを使用して、次の機能を提供します。

  • Grant-UserRight
  • ユーザー権利の取り消し
  • Get-UserRightsGrantedToAccount
  • Get-AccountsWithUserRight
  • Grant-TokenPrivilege
  • TokenPrivilegeを取り消す