PowerShell でフォルダーのアクセス許可を設定する
ACL (アクセス制御リスト) は、ファイルまたはリソースにアクセスするためのユーザーの許可とユーザー グループを表します。 これは、アクセス制御エントリ (ACE) の順序付きリストです。
アクセス制御エントリを追加する場合、許可または拒否されるアクセス権を定義し、フォルダーに対するユーザーおよびグループのアクセス許可を設定できます。 ファイル エクスプローラーの GUI を使用して、Windows でフォルダーのアクセス許可を簡単に設定または変更できます。
このチュートリアルでは、PowerShell を使用してフォルダーのアクセス許可を設定する方法を学習します。
Set-Acl
コマンドレットを使用して、PowerShell でフォルダーのアクセス許可を設定する
ACL は、セキュリティ デポジットに情報を保存します。 セキュリティ記述子には、システム ACL (SACL) と随意 ACL (DACL) の 2つの ACL タイプがあります。
DACL の各 ACE には、次の 3 種類の情報が含まれています。
- セキュリティ識別子 (SID): SID は、ACE が誰に適用されるかを決定します。 単一のユーザーまたはユーザーのグループにすることができます。
- アクセス権のセット: アクセス権は、オブジェクトに対して特定の操作を実行する権利です。 詳しくはアクセス権をご覧ください。
- アクセス権のセットが許可されているか拒否されているか。
Set-Acl
は、指定されたファイルまたはリソースのセキュリティ記述子を変更します。 -AclObject
パラメータの値として指定されたセキュリティ記述子を適用します。
次の例では、新しい ACL ルールをフォルダー C:\pc\computing
の既存のアクセス許可に追加します。
$acl = Get-Acl -Path "C:\pc\computing"
$ace = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("testuser", "Read", "Allow")
$acl.AddAccessRule($ace)
Set-Acl -Path "C:\pc\computer" -AclObject $acl
最初のコマンドは、C:\pc\computing
の既存の ACL ルールを取得します。 2 番目のコマンドは、フォルダーに適用する新しい FileSystemAccessRule
を作成します。
3 番目のコマンドは、フォルダーの既存のアクセス許可に新しい ACL 規則を追加します。 4 番目のコマンドは、Set-Acl
を使用して、新しい ACL をフォルダーに適用します。
次のコマンドを使用して、フォルダーの ACL を表示できます。
Get-Acl C:\pc\computing | Format-List
出力:
Path : Microsoft.PowerShell.Core\FileSystem::C:\pc\computing
Owner : DelftStack\rhntm
Group : DelftStack\rhntm
Access : DelftStack\testuser Allow Read, Synchronize
DelftStack\rhntm Allow FullControl
Audit :
Sddl : O:S-1-5-21-1715350875-4262369108-2050631134-1001G:S-1-5-21-1715350875-4262369108-2050631134-1001D:AI(A;;FR;;;S-1-5-21-1715350875-4262369108-2050631134-1003)(A;OICIID;FA;;;S-1-5-21-1715350875-4262
369108-2050631134-1001)
ご覧のとおり、ユーザー testuser
はフォルダーに対する読み取り権限を持っています。 スクリプトを使用して、多数のフォルダーとファイルにアクセス許可を簡単かつ迅速に設定できます。
また、PowerShell を使用してフォルダーにアクセス許可を再帰的に設定する の方法に関する記事も参照してください。