2016-03-01 3 views
0

Я пытаюсь обслуживать веб-страницу локально с помощью IIS, но у меня возникают проблемы с программной настройкой разрешений для всех файлов в моем каталоге wwwroot. Когда я использую директиву PowerShellс ссылочным файлом, который имеет необходимые разрешения, я вижу только размножение двух изменений: владелец изменен и добавлены разрешения RW для группы IIS_USRS. Как распространять разрешения из файла ссылки на все файлы в каталоге в Windows?

PS C:\WINDOWS\system32> $newAcl = Get-Acl C:\inetpub\wwwroot\ 
PS C:\WINDOWS\system32> Get-ChildItem C:\inetpub\wwwroot\ -Recurse -Force | Set-Acl -AclObject $newAcl 
PS C:\WINDOWS\system32>
A screenshot of the permissions in wwwroot that I'd like propagated A screenshot of the permissions of a sample file in after using Set-Acl Так что мой вопрос: что я делаю неправильно? Как я могу получить более подробные разрешения для распространения? (Я также попытался проверки и применения Replace all existing inheritable permissions on all descendants with inheritable permissions from this object, но это, кажется, не помогло.)

+0

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

ответ

0

Вы уверены, что вы с указанием БЕРУЩИХ файл или каталог (и не наследница) для разрешений, которые вы хотите копировать?

Если вы укажете (в $newAcl) наследника к разрешениям вы хотите, то Set-Acl будет только распространяться разрешения, сам файл имеет изначально (то есть, не будучи наследуется), и вы не увидите унаследованные разрешения на файлы, разрешения которых вы устанавливаете.

Чтобы получить наследуемые разрешения, вы можете использовать либо Helge Klein's SetACL или вы можете указать наследственный (выше) каталог или файл в Get-Acl назначении.

Так что если C:\inetpub\wwwroot\ наследует большую часть своих разрешений от C:\inetpub\, то вы хотите $newAcl = Get-Acl C:\inetpub\ в команде сниппет PowerShell вы предоставили.