qshinoの日記

Powershell関係と徒然なこと

フォルダパーミッション

フォルダパーミッション設定 by powershell

基本操作は、acl取得、変更、acl設定。

実施例) 継承無効化

$folder = 'c:\tmp\myfolder'
$acl = Get-Acl $folder
$acl.SetAccessRuleProtection($true,$true)
$acl | Set-Acl $folder

継承付きでフルコントロール

Function Set-Perm ($folder, $perm){
  $acl   = Get-Acl $folder
  $rule = New-Object System.Security.AccessControl.FileSystemAccessRule $perm
  $acl.SetAccessRule($rule)
  $acl | Set-Acl $folder
}

$folder = c:\poi\poi"
$user="domain\user"
# perm:ユーザー名,アクセス権,下位フォルダへ継承,下位オブジェクトへ継承,継承の制限,アクセス許可
$perm = "($user,"FullControl","ContainerInherit, ObjectInherit", "None","Allow")"

Set-Perm ($folder, $perm)

Read

$perm = ($user,"ReadAndExecute","ContainerInherit, ObjectInherit", "None","Allow")
Set-Perm ( $folder, $perm )

以後は Set-Perm省略

アクセス拒否

$perm = ($user,"FullControl","ContainerInherit, ObjectInherit", "None","Deny")

CLI

iusr にリード R 許可

icacls の場合

icacls ディレクトリ /grant IUSR:(OI)(CI)R /T

古い caclsの場合

cacls ディレクトリ /G IUSR:R /E /T

参考

https://forums.iis.net/t/1163556.aspx

http://tech.lecume.net/power-shell/configure-filesystem-acl