web-dev-qa-db-ja.com

set-aclで追加されたユーザー権限は、ファイルとサブフォルダーに継承されません

2つのPowerShellスクリプトを作成しました。ユーザーにフォルダー名を尋ねます。その名前のフォルダーを作成し、ユーザーにフルコントロールを与え、管理者グループにフルコントロールを与え、継承された権限を取り除き、ユーザーと管理者のみを残します。 2番目のスクリプトは、ユーザー名を要求し、新しいフォルダー内のそのユーザーに変更権限を付与します。

新しく作成したフォルダにファイルまたはフォルダを作成すると、それらの権限が継承されないという点を除いて、意図したとおりに機能します。 [セキュリティ]タブを見て、[詳細設定]をクリックして(アカウントで)編集したところ、2つのことがわかりました。

  • 「適用先」設定は「このフォルダのみ」です。手動で「このフォルダ、サブフォルダ、ファイル」に設定すると、意図したとおりに機能します
  • 2番目のスクリプトで作成されたユーザーは上記を持っており、アクセス許可ボックス「サブフォルダーとファイルの削除」はチェックされていません。

アカウントの追加は、次の行を中心に展開されます。

$Acl = Get-Acl $Folderpath
$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($user_account,"FullControl","Allow")
$Acl.Setaccessrule($Ar)
Set-Acl $Folderpath $Acl

$Folderpathは、フォルダを指す以前に設定された変数です。 $user_accountは、ユーザーアカウント名を含む以前に設定された変数です。

私の質問:

これらのアカウントをフォルダーのアクセス許可に正しく追加する方法(権限は継承され、ユーザーには削除権限があります)、または後でスクリプトで修正する方法はありますか?

3
Erwin Blonk

より多くの継承フラグが必要です。 3つの引数を渡すだけでACEを作成するために使用しているコンストラクターは、ACEがどのように継承するかを指定しません。

これを試して:

$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($user_account, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
5
Shane Madden