PowerShellを使用してNTFSアクセス許可を管理する方法は?
Windowsでファイルまたはフォルダへのアクセスを管理するために、特別なACL(アクセス制御リスト)がNTFSファイルシステムオブジェクト(ファイルまたはフォルダ)に割り当てられます。オブジェクトのACLは、ユーザーまたはグループがファイルシステムオブジェクトで実行できる使用可能な操作(権限)を定義します。ほとんどの場合、Windows管理者は、ファイルエクスプローラーのグラフィックインターフェイス([ファイル/フォルダーのプロパティ]-> [セキュリティ]タブ)またはicaclsコンソールツールを使用して、ファイルまたはフォルダーに対するNTFSアクセス許可を管理します。この記事では、PowerShellコマンドレットを使用してNTFSオブジェクトのアクセス許可を管理する方法について説明します。これらのコマンドをスクリプトで使用するか、Windowsファイルサーバーおよびワークステーションでの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
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
現在の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
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
フォルダの現在のNTFSアクセス許可を一覧表示します。Get-Item 'c:\docs' | Get-NTFSAccess
ご覧のとおり、現在の権限はより便利な形式で表示されます。
特定のフォルダーに対するユーザーまたはグループのフルコントロール権限を付与するには、次のコマンドを実行します。
Add-NTFSAccess -Path C:\docs -Account 'CORP\RShelby','BUILTIN\Administrators' -AccessRights 'Fullcontrol' -PassThru
最上位のフォルダーレベルでのみアクセス許可を付与し、ネストされたオブジェクト(フォルダーのみ)のアクセス許可を変更しないようにするには、次のコマンドを使用します。
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
ファイルシステムオブジェクトに対する現在の有効なユーザー権限は、 AccessRightsで指定されます。 フィールド。
-
Microsoft OneDrive でファイルを管理する方法
Google ドライブを持つ Google や iCloud を持つ Apple と同様に、Microsoft は OneDrive (以前の SkyDrive) を所有しています。人々や企業が高価なハードウェアに依存する要件を減らし、ファイルやドキュメントをクラウドに配置して管理することを好むため、クラウド ストレージ サービスは最近非常に流行しています。 ユーザーの生活におけるクラウド サービスの需要と重要性を見て、OneDrive はますます多くの機能を組み込みました。更新されたバージョンには、ファイルや写真を簡単に転送するためのドラッグ アンド ドロップ、ドキュメントをリアルタイムで
-
Windows タグでファイルとフォルダを管理する方法
システムから古いファイルを検索することは、炭庫で黒猫を探すようなものです。たとえば、昨年の南アメリカでの休暇の写真はどこに保存したのでしょうか。または 2018 年に書いたレポートの名前は? Windows 10 には強力な検索機能が組み込まれていますが、特に Cortana を使用すると、画像、音楽、PDF などのフィルターを使用してスマートに検索できます。最も無視されている機能の 1 つである Windows タグ 効率的な方法でファイルを検索して整理するのは理にかなっています。 Windows タグとは何か、なぜそれを使用する必要があるのか? タグは、Windows 10 の最も