グループポリシーでは、それが必要であるとされています

グループポリシーでは、それが必要であるとされています

Windowsのユーザーにはさまざまな権限が与えられます特権

権限によって、ユーザー アカウントが実行できるシステム操作の種類が決まります。管理者は、ユーザー アカウントとグループ アカウントに権限を割り当てます。各ユーザーの権限には、ユーザーとユーザーが所属するグループに付与される権限が含まれます。

現在、35 の権限があります。特に興味深いものは次のとおりです。

  • SeSystemtime権限: システム時刻を変更するために必要です。
  • タイムゾーン特権: コンピュータの内部時計に関連付けられたタイムゾーンを調整するために必要
  • SeBackup権限: この権限により、システムは、ファイルに指定されたアクセス制御リスト (ACL) に関係なく、すべてのファイルに対する読み取りアクセス制御を許可します。
  • SeCreatePagefile権限: ページング ファイルを作成するために必要です。
  • SeRemoteShutdown権限: ネットワーク要求を使用してシステムをシャットダウンするために必要です。
  • SeDebug権限: 別のアカウントが所有するプロセスのメモリをデバッグおよび調整するために必要です。

しかし、私が興味を持っているのは次のものです。

  • SeShutdown権限: ローカル システムをシャットダウンするために必要です。

私は実際には持っているこの権限が必要です。管理者特権のコマンドプロンプトから:

>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                  Description                               State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege        Adjust memory quotas for a process        Disabled
SeSecurityPrivilege             Manage auditing and security log          Disabled
SeTakeOwnershipPrivilege        Take ownership of files or other objects  Disabled
   ...
SeShutdownPrivilege             Shut down the system                      Disabled
   ...

これは使用時に確認されますプロセスエクスプローラー私として実行されている昇格されたプロセスのセキュリティ トークンを調べるには:

ここに画像の説明を入力してください

それでも私はできるシステムをシャットダウンします。なぜですか?

グループポリシーでは、それが必要であるとされています

ローカルセキュリティポリシーエディタスナップイン(secpol.msc)を使用すると、すべき特権があります:

  • secpol.msc

    • セキュリティ設定
    • ローカルポリシー
    • ユーザー権限の割り当て
    • システムをシャットダウンする

      ここに画像の説明を入力してください

説明特権の:

システムをシャットダウンする

このセキュリティ設定は、コンピュータにローカルでログオンしているどのユーザーが、シャットダウン コマンドを使用してオペレーティング システムをシャットダウンできるかを決定します。このユーザー権利を誤用すると、サービス拒否が発生する可能性があります。

ワークステーションのデフォルト: 管理者、バックアップ オペレーター、ユーザー。

サーバーのデフォルト: 管理者、バックアップ オペレーター。

ドメイン コントローラーのデフォルト: 管理者、バックアップ オペレーター、サーバー オペレーター、印刷オペレーター。

私はユーザー時々私は管理者、そして時には私は管理者ではない

おそらく疑問なのはなぜかしない私には特権がある。

しかし、現実には私にはその権限がありません。それでも、ローカルにログインすると、ローカル システムをシャットダウンできます。

なぜ?


@Mehrdad は良い回答をしていましたが、彼はそれを削除しました。これは注目に値する回答であり、質問にうまく簡潔に答えていると思います。

あなた持っている権限がありません。デフォルトでは無効になっています。権限がない場合はまったくリストに載らない
知らせ それは、欠けている、または、SE_PRIVILEGE_REMOVEDとは異なります 。SE_PRIVILEGE_ENABLEDSE_PRIVILEGE_ENABLED_BY_DEFAULT

ボーナス読書

答え1

許可はありますが、無効PowerShell が伝えているのはこれです。

システムをシャットダウンするには、Win32API関数を使用します。InitiateSystemShutdownまたはExitWindowsEx:

ExitWindowsEx(EWX_POWEROFF, 0);

これらの関数は次の点に注意します。

ローカルコンピュータをシャットダウンするには、SE_SHUTDOWN_NAME権限が必要です。デフォルトでは、ユーザーはSE_SHUTDOWN_NAMEを有効にすることができますログオンしているコンピュータ上で SE_REMOTE_SHUTDOWN_NAME 権限を有効にできます。また、管理者はリモート コンピュータ上で SE_REMOTE_SHUTDOWN_NAME 権限を有効にできます。

ご覧のとおり、WindowsはExitWindowsEx権限(どのスレッドも権限を持つトークンを持っています)なしで呼び出すと、SE_SHUTDOWN_NAME権限がない場合、関数はエラーで失敗します:

Error code: 1314
A required privilege is not held by the client

作成したスレッドはデフォルトで権限を継承しますが、プログラムは、無効にされた権限を有効にすることができます。AdjustTokenPrivileges:

TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = LookupPrivilegeValue(NULL, "SeShutdownPrivilege");
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

HANDLE processToken = OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES);
AdjustTokenPrivileges(processToken, FALSE, &tp, 0, NULL, NULL);
CloseHandle(processToken);

トークンの権限の変更言う:

AdjustTokenPrivileges 権限を追加または削除できないトークンから。現在無効になっている既存の権限のみを有効にするまたは現在有効になっている既存の権限を無効にする


では、なぜこの権限はデフォルトで無効になっているのでしょうか? プログラムが誤って Windows をシャットダウンしないようにするためです。 アプリケーションはこれを明示的に要求する必要があります。

古いけれども非常に良い本があります。https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/そういったことすべてについて。

答え2

これは、ユーザーがその権限が有効になっているグループに属しているためです。

どのグループか確認するには:

  • 管理者として PowerShell (またはコマンド) プロンプトを開きます。
  • 走るsecedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
  • OutFile.cfg の内容をメモ帳などで表示し、SeShutdownPrivilegeエントリを探します。その権限が有効になっているユーザーやグループの SID がいくつか表示されます (表示されるはずです)。

3 つの短い SID がリストされています。短い SID は通常、コンピューター レベルのアカウント/グループです。たとえば、そのうちの 1 つは ですS-1-5-32-545

PowerShell を使用すると、SID がどのアカウント/グループを表すかを特定できます。

$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-32-545")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value

これは を返しますBUILTIN\Users

あなたはそのコンピューターのユーザーなので、自動的にそのグループのメンバーとなり、コンピューターをシャットダウンできるようになります。

S-1-5-32-544他には、 と がありますS-1-5-32-551。これらは標準BUILTIN\AdministratorsグループとBUILTIN\Backup Operatorsグループです。これらは、ダイアログに表示されているグループと一致しますsecpol.msc

関連情報