Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用してNTFSアクセス許可を管理する方法は?

Windowsでファイルまたはフォルダへのアクセスを管理するために、特別なACL(アクセス制御リスト)がNTFSファイルシステムオブジェクト(ファイルまたはフォルダ)に割り当てられます。オブジェクトのACLは、ユーザーまたはグループがファイルシステムオブジェクトで実行できる使用可能な操作(権限)を定義します。ほとんどの場合、Windows管理者は、ファイルエクスプローラーのグラフィックインターフェイス([ファイル/フォルダーのプロパティ]-> [セキュリティ]タブ)またはicaclsコンソールツールを使用して、ファイルまたはフォルダーに対するNTFSアクセス許可を管理します。この記事では、PowerShellコマンドレットを使用してNTFSオブジェクトのアクセス許可を管理する方法について説明します。これらのコマンドをスクリプトで使用するか、WindowsファイルサーバーおよびワークステーションでのNTFSアクセス許可の管理を自動化することができます。

PowerShellを使用してNTFSアクセス許可を管理する方法は?

Get-Acl&Set-Acl:NTFSACLを管理するための組み込みのPowerShellコマンドレット

PowerShell v5(Windows 10 / Windows Server 2016)には、ACLを管理するための2つの別個の組み込みコマンドレットがあります( Microsoft.PowerShell.Security の一部)。 モジュール):

  • Get-Acl —NTFSファイルシステム上の特定のオブジェクトの現在のACLを取得できます。
  • Set-Acl –現在のオブジェクトACLを追加/変更するために使用されます。

ほとんどの場合、これらの組み込みコマンドレットの機能は実際のタスクでNTFSアクセス許可を管理するには不十分であるため、これらの組み込みコマンドレットについては詳しく説明しません。いくつかの典型的な使用例について詳しく見ていきましょう。

フォルダ(ファイル)の現在の所有者と割り当てられたNTFSアクセス許可のリストを取得するには、次のコマンドを実行します。

get-acl C:\docs\ |fl

PowerShellを使用してNTFSアクセス許可を管理する方法は?

Path : Microsoft.PowerShell.Core\FileSystem::C:\docs\
Owner : CORP\asmith
Group : CORP\Domain Users
Access : PC-7L7JAK6\root Allow ReadAndExecute, Synchronize
BUILTIN\Administrators Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Users Allow ReadAndExecute, Synchronize
NT AUTHORITY\Authenticated Users Allow Modify, Synchronize
NT AUTHORITY\Authenticated Users Allow -536805376
Audit :
Sddl : O:S-1-5-21-2950832418-2342342341-4040681116-234234G:DUD:AI(A;OICI;0x1200a9;;;S-1-5-21-2601781602-2342342341-6543210895-1001)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;SY)(A;OICIID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)
ご覧のとおり、現在の権限は SDDlとしても表示されます。 文字列—このアクセスの説明の形式については、「Windowsサービスのアクセス許可の設定」の記事で簡単に説明しました。

NTFSアクセス許可のリストは、より明確な形式でのみ表示できます。

(get-acl C:\docs\).access

PowerShellを使用してNTFSアクセス許可を管理する方法は?

現在のNTFSアクセス許可を1つのNTFSフォルダ(オブジェクト)からコピーして、別のフォルダに適用できます:

Get-Acl e:\old_docs | Set-Acl C:\docs

これを行うには、アカウントがオブジェクトの所有者であり、所有権の取得権限を持っている必要があります。

Set-ACLを使用する場合の主な問題は、NTFSアクセス許可を変更する必要がある場合でも、コマンドレットが常にリソース所有者を変更しようとすることです。したがって、オブジェクトに権限を追加するには、次の複雑なスクリプトを使用する必要があります。

$path = "c:\docs "
$user = "corp\DSullivan"
$Permiss = "Read, ReadAndExecute, ListDirectory"
$InheritSettings = "Containerinherit, ObjectInherit"
$PropogationSettings = "None"
$RuleType = "Allow"
$acl = Get-Acl $path
$perm = $user, $Permiss, $InheritSettings, $PropogationSettings, $RuleType
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $perm
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path $path

ユーザーまたはグループのフォルダにアクセスするためのNTFSアクセス許可を削除するには:
$path = "c:\docs"
$acl = Get-Acl $path
$rules = $acl.Access | where IsInherited -eq $false
$targetrule = $rules | where IdentityReference -eq "corp\DSullivan"
$acl.RemoveAccessRule($targetrule)
$acl | Set-Acl -Path $path

PowerShellからのフォルダーの継承を無効にするには:

$path = 'C:\docs
$acl = Get-ACL -Path $path
$acl.SetAccessRuleProtection($True, $True) # the first $True shows if the folder is protected, the second $True specifies if the current NTFS permissions have to be copied
Set-Acl -Path $path -AclObject $acl

また、Get-AclおよびSet-Aclを使用すると、オブジェクトのNTFS監査設定(共有フォルダーからファイルを削除したユーザーの追跡の記事を参照)またはADの現在のOU委任アクセス許可について管理できます。

NTFSSecurityPowerShellモジュールを使用したファイル権限の管理

すでに述べたように、ファイルシステムオブジェクトを管理するための組み込みのPowerShellコマンドレットはあまり便利ではありません。 Windowsのファイルとフォルダに対するNTFSアクセス許可を管理するには、PowerShellギャラリーとは別のモジュール( NTFSSecurity )を使用することをお勧めします。 。 Install-Module -Name NTFSSecurityを使用して、最新バージョンのNTFSSecurityモジュール(現在は4.2.6)をインストールできます。 コマンドを実行するか、手動でダウンロードします(リンク)。手動でインストールする場合は、モジュールアーカイブをC:\Windows\System32\WindowsPowerShell\v1.0\Modules\NTFSSecurity に抽出するだけです。 (ダウンロードしたファイルのブロックを解除することを忘れないでください)。

NTFSSecurityモジュールをPowerShellセッションにインポートします:

Import-Module NTFSSecurity

モジュールで使用可能なコマンドのリストを表示します(36個のコマンドレット):

Get-Command -Module NTFSSecurity

PowerShellを使用してNTFSアクセス許可を管理する方法は?

フォルダの現在のNTFSアクセス許可を一覧表示します。
Get-Item 'c:\docs' | Get-NTFSAccess

ご覧のとおり、現在の権限はより便利な形式で表示されます。

PowerShellを使用してNTFSアクセス許可を管理する方法は?

特定のフォルダーに対するユーザーまたはグループのフルコントロール権限を付与するには、次のコマンドを実行します。
Add-NTFSAccess -Path C:\docs -Account 'CORP\RShelby','BUILTIN\Administrators' -AccessRights 'Fullcontrol' -PassThru

ヒント 。デフォルトでは、NTFSSecurityコマンドレットはデータを返しません。 -PassThruを使用します コマンドの実行後に新しいACLを表示するようにするパラメーター。

最上位のフォルダーレベルでのみアクセス許可を付与し、ネストされたオブジェクト(フォルダーのみ)のアクセス許可を変更しないようにするには、次のコマンドを使用します。

Add-NTFSAccess c:\docs\public -Account corp\LMurkowski -AccessRights Modify -AppliesTo ThisFolderOnly

割り当てられたNTFSアクセス許可を削除するには:

Remove-NTFSAccess -Path C:\DOCS -Account 'corp\LMurkowski' -AccessRights FullControl -PassThru

次のコマンドは、指定されたアカウントのフォルダー内のすべてのネストされたオブジェクトのアクセス許可を削除します(継承されたアクセス許可はスキップされます):

Get-ChildItem -Path C:\docs -Recurse | Get-NTFSAccess -Account 'corp\LMurkowski' -ExcludeInherited |Remove-NTFSAccess -PassThru

次のコマンドを使用して、管理者アカウントをフォルダ内のすべてのネストされたオブジェクトの所有者にすることができます。

Get-ChildItem -Path C:\docs -Recurse -Force | Set-NTFSOwner -Account 'Administrator'

フォルダオブジェクトに割り当てられているすべてのアクセス許可を手動でクリアするには(継承されたアクセス許可は削除されません):

Get-ChildItem -Path C:\docs -Recurse -Force | Clear-NTFSAccess

フォルダ内のすべてのオブジェクトに対してNTFS継承を有効にするには:

Get-ChildItem -Path C:\docs -Recurse -Force | Enable-NTFSAccessInheritance

継承されたものを除いて手動で割り当てられたすべてのアクセス許可を表示するには:

dir C:\docs | Get-NTFSAccess –ExcludeInherited

特定のアカウントに割り当てられた権限を表示できます(有効な権限と混同しないでください。後で説明します):

dir C:\docs | Get-NTFSAccess -Account woshub\RShelby

PowerShellを使用してNTFSの有効なアクセス許可を表示する方法

有効なNTFSアクセス許可を表示できます Get-EffectiveAccessを使用した特定のファイルまたはフォルダーの場合 コマンドレット。特定のフォルダへのアクセスを複数のADセキュリティグループに許可していて、特定のユーザーアカウント(またはSID)がファイルフォルダにアクセスできるかどうかを知りたいとします。ユーザーアカウントが属するADグループのすべてのメンバーを一覧表示せずにそれを行うにはどうすればよいですか?これは、効果的なNTFSアクセス許可を表示することが非常に役立つ場合です。たとえば、ドメインアカウント confroomのフォルダ内のネストされたすべてのディレクトリに対する有効な権限を表示する必要があります。 。

Get-ChildItem -Path c:\docs -Recurse -Directory | Get-NTFSEffectiveAccess -Account 'corp\confroom’ | select Account, AccessControlType, AccessRights, FullNameを選択します

または、特定のファイルの有効な権限を表示できます:

Get-Item -Path 'C:\docs\annual_report2019.xlsx' | Get-NTFSEffectiveAccess -Account 'corp\confroom' | Format-List

PowerShellを使用してNTFSアクセス許可を管理する方法は?

ファイルシステムオブジェクトに対する現在の有効なユーザー権限は、 AccessRightsで指定されます。 フィールド。


  1. Microsoft OneDrive でファイルを管理する方法

    Google ドライブを持つ Google や iCloud を持つ Apple と同様に、Microsoft は OneDrive (以前の SkyDrive) を所有しています。人々や企業が高価なハードウェアに依存する要件を減らし、ファイルやドキュメントをクラウドに配置して管理することを好むため、クラウド ストレージ サービスは最近非常に流行しています。 ユーザーの生活におけるクラウド サービスの需要と重要性を見て、OneDrive はますます多くの機能を組み込みました。更新されたバージョンには、ファイルや写真を簡単に転送するためのドラッグ アンド ドロップ、ドキュメントをリアルタイムで

  2. Windows タグでファイルとフォルダを管理する方法

    システムから古いファイルを検索することは、炭庫で黒猫を探すようなものです。たとえば、昨年の南アメリカでの休暇の写真はどこに保存したのでしょうか。または 2018 年に書いたレポートの名前は? Windows 10 には強力な検索機能が組み込まれていますが、特に Cortana を使用すると、画像、音楽、PDF などのフィルターを使用してスマートに検索できます。最も無視されている機能の 1 つである Windows タグ 効率的な方法でファイルを検索して整理するのは理にかなっています。 Windows タグとは何か、なぜそれを使用する必要があるのか​​? タグは、Windows 10 の最も