Рекурсивно устанавливать разрешения для папок с помощью Powershell?

125
14

У меня есть каталог, который я хочу пройти рекурсивно и установить разрешения для всех папок. Таким образом, порядок операций должен быть:

Удалить все ACL из папки Добавить ACL в папку Установить ACL

Я попробовал код ниже, но я получаю ошибку

Невозможно установить ACL, потому что метод, который ему нужно вызвать, SetSecurityDescriptor, не существует.

foreach ($folder in Get-ChildItem -Path c:\perms -Recurse -Directory) {
$AccessRule = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("user", "FullControl", "ContainerInherit,ObjectInherit", "InheritOnly", "Allow")
$acl = Get-Acl $folder
$acl.SetAcccessRule($AccessRule)
Set-Acl -Path $folder.FullName -AclObject $acl
}

Я избавился от сообщения об ошибке, и он добавил ACL, но я хочу в основном удалить все ACL из папки и добавить новые.

Я обновил свой сценарий, чтобы выглядеть так:

$acl = Get-Acl -Path "c:\perms"
$acl.SetAccessRuleProtection($true,$false)
$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) | Out-Null }
$ace = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("user", "FullControl", "ContainerInherit,ObjectInherit", "InheritOnly", "Allow")
$acl.AddAccessRule($ace)
Set-Acl -Path "c:\perms" -AclObject $acl

Если я хочу добавить несколько $ace, это просто вопрос объявления $ace2, $ace3 а затем вызов $acl.AddAccessRule($ace2), $acl.AddAccessRule($ace3).

спросил(а) 2021-01-25T14:29:31+03:00 4 месяца, 4 недели назад
1
Решение
63

Используйте SetAccessRuleProtection() для отключения наследования и удаления унаследованных ACE:

$acl.SetAccessRuleProtection($true, $false)

Используйте RemoveAccessRule() для удаления существующих (не наследуемых) ACE:

$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) | Out-Null }

Используйте AddAccessRule() для добавления новых ACE:

$ace = New-Object Security.AccessControl.FileSystemAccessRule "user", ...
$acl.AddAccessRule($ace)
...

Сделайте это только для самой верхней папки. Оставьте наследование включенным везде ниже, поэтому ваши изменения будут автоматически распространяться.

ответил(а) 2021-01-25T14:29:31+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема