none
Powershell v4: удалить наследование NTFS. RRS feed

  • Вопрос

  • Доброго времени суток.

    Вопрос по управлению наследованием с помощью get-acl/set-acl. Например мне нужно удалить наследование с 2х папок:

    $catalog = "E:\1","E\2"
    $acl = get-acl $catalog
    $acl.setaccessruleprotection($true,$false)
    $acl | set-acl
    

    Наследование было удалено и убраны унаследованные разрешения. Я не использовал -path, поэтому путь был взят из $acl - логично.

    Вопрос: как после этого включить наследование? Да, я удалил унаследованные разрешения, а не преобразовал в явные, однако я являюсь владельцем и включить руками (по кнопке) наследование могу без проблем, хотя powershell выдает следующее:

    PS C:\Windows\system32> $acl = Get-Acl "E:\test\1"
    PS C:\Windows\system32> $acl
    
    
        Каталог: E:\test
    
    
    Path                                    Owner                                   Access
    ----                                    -----                                   ------
    1                                       GUEI\kopilov
    
    
    PS C:\Windows\system32> $acl.SetAccessRuleProtection($false,$true)
    PS C:\Windows\system32> $acl | Set-Acl
    Set-Acl : Попытка выполнить несанкционированную операцию.
    строка:1 знак:8
    + $acl | Set-Acl
    +        ~~~~~~~
        + CategoryInfo          : PermissionDenied: (E:\test\1:String) [Set-Acl], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetAclCommand

    24 декабря 2014 г. 4:38

Ответы

  • Get/Set-Acl встроенные средства имеют очень ограниченный функционал и исправлять это никто не собирается, пока эти командлеты не перепишет группа по Security, но это происходит уже с 2008 года. Так что наиболее верное решение использовать сторонние или встроенные решения.

    icacls "E:\test\1" /inheritance:e

    24 декабря 2014 г. 5:23
    Отвечающий