【PowerShell】フォルダーのアクセス権制御

この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。

はじめに

 Power Shell で Windows OS 上にあるフォルダーの NTFS アクセス権を制御する方法を(自身の備忘も兼ねて)投稿します.

概要

 最初にアクセス権操作方法(アクセス権許可付与/アクセス権拒否付与/アクセス権削除)を説明します.
 次にアクセス権操作方法で登場する”5つの引数を持つ変数”の説明を行います.(変数名は$Permissionとする)

アクセス権操作方法

 アクセス権操作のフローは以下の通りです.
  i.操作対象オブジェクトのアクセス権を取得( get-acl コマンドレット)
  ii.(i)で取得したアクセス権に対して設定の変更を実施( acl.SetAccessRule コマンドレット)
  iii.(ii)で変更した内容を適用( set-acl コマンドレット)

  1. アクセス許可の追加方法 (フルコントロール権限・子フォルダに継承)
    $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の適用

  2. アクセス拒否の追加方法(フルコントロール権限・子フォルダに継承)
    $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の適用

  3. アクセス権の削除方法
    $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

いいね (この記事が参考になった人の数:43)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください