この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
Power Shell で Windows OS 上にあるフォルダーの NTFS アクセス権を制御する方法を(自身の備忘も兼ねて)投稿します.
概要
最初にアクセス権操作方法(アクセス権許可付与/アクセス権拒否付与/アクセス権削除)を説明します.
次にアクセス権操作方法で登場する”5つの引数を持つ変数”の説明を行います.(変数名は$Permissionとする)
アクセス権操作方法
アクセス権操作のフローは以下の通りです.
i.操作対象オブジェクトのアクセス権を取得( get-acl コマンドレット)
ii.(i)で取得したアクセス権に対して設定の変更を実施( acl.SetAccessRule コマンドレット)
iii.(ii)で変更した内容を適用( set-acl コマンドレット)
- アクセス許可の追加方法 (フルコントロール権限・子フォルダに継承)
$User_or_Group_Name = ‘name’ #ACEの対象となるユーザー・グループ名
$Folder_Path = ‘C:\PPT\Cloudsteady\’ #対象オブジェクトパス
$acl = Get-acl $Folder_Path #対象オブジェクトのACL取得
$Permission = (“$User_or_Group_Name”,”FullControl”,”ContainerInherit”,”None”,”Allow”) #アクセス制御 (詳細は後述)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission
$acl.SetAccessRule($accessRule) #ACL変更
$acl | Set-Acl $Folder_Path #変更したACLの適用 - アクセス拒否の追加方法(フルコントロール権限・子フォルダに継承)
$User_or_Group_Name = ‘name’ #ACEの対象となるユーザー・グループ名
$Folder_Path = ‘C:\PPT\Cloudsteady\’ #対象オブジェクトパス
$acl = Get-acl $Folder_Path #対象オブジェクトのACL取得
$Permission = (“$User_or_Group_Name”,”FullControl”,”ContainerInherit”,”None”,”Deny”) #アクセス制御 (詳細は後述)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission
$acl.SetAccessRule($accessRule) #ACL変更
$acl | Set-Acl $Folder_Path #変更したACLの適用 - アクセス権の削除方法
$User_or_Group_Name = ‘name’ #ACEの対象となるユーザー・グループ名
$Folder_Path = ‘C:\PPT\Cloudsteady\’ #対象オブジェクトパス
$acl = Get-acl $Folder_Path #対象オブジェクトのACL取得
$removeACLRule = $acl | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -eq “$User_or_Group_Name”} #対象ACEを削除
$acl.RemoveAccessRule($removeACLRule) #ACL削除
$acl | Set-Acl $Folder_Path #変更したACLの適用
5つの引数を持つ変数の説明
アクセス権操作を行う際に5つの引数を持つ変数(上記 $Permission に該当)が必要となります.以下の内容を参考に引数を設定をしてください.
$Permission = (“➀”,”②”,”③”,”④”,”⑤”)
➀ACEの対象となるユーザー名またはグループ名を指定します.
例)1.”PPTUser01″ (ユーザー)
2.”TOYOSUGroup” (グループ)
②アクセス権の種類を指定します.
例)1. “FullControl” (フルコントロール権限)
2. “Read” (読み取り権限)
3. “ReadAndExcurte” (読み取りと実行権限)
4. “Traverse” (フォルダーの内容の一覧表示権限)
5. “Write” (書き込み)
※上記以外のアクセス権の種類を指定する場合はこちらのサイトを参考にしてください.
③継承する子オブジェクトを指定します.
例)1. “None” (子オブジェクトに継承しない)
2. “ContainerInherit” (子フォルダに継承する)
3. “ObjectInherit” (子ファイルに継承する)
4. “ContainerInherit,ObjectInherit” (子フォルダと子ファイルに継承する)
④子オブジェクトにアクセス権制御エントリ( ACE )を反映する規則を指定します.
例)1. None (継承フラグを設定しない)
2. InheritOnly (子オブジェクトにのみ ACE を反映させる)
3. NoPropagateInherit (子オブジェクトに ACE を反映させない)
※上記以外を指定する場合はこちらのサイトを参考にしてください.
⑤アクセスの許可・拒否を指定します.
例)1. “Allow” (許可)
2. “Deny” (拒否)
早見表
No | ③引数 | ④引数 | result |
1 | None | None | このフォルダーのみ |
2 | InheritOnly | このフォルダーのみ | |
3 | NoPropagateInherit | このフォルダーのみ | |
4 | ContainerInherit | None | このフォルダーとサブフォルダー |
5 | InheritOnly | サブフォルダーのみ | |
6 | NoPropagateInherit | このフォルダーとサブフォルダー | |
7 | ObjectInherit | None | このフォルダーとファイル |
8 | InheritOnly | ファイルのみ | |
9 | NoPropagateInherit | このフォルダーとファイル |
参考サイト
・Microsoft Docs
・https://tech.lecume.net/power-shell/configure-filesystem-acl