Использование PowerShell для предоставления доступа к папке для «IIS AppPool» - PullRequest
0 голосов
/ 17 апреля 2020

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

function Set_iis_perms {
    param (
        [parameter(position=0)]
        $AppPoolName,
        [parameter(position=1)]
        $FileName
    )
    $acl = Get-Acl $FileName
    $acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule(("iis apppool\$Apppool_Name"),"Modify","Allow")))
    $acl | Set-Acl $FileName
}

Даже если кто-то может указать мне правильное направление, я был бы очень благодарен.

С уважением, Дом

1 Ответ

0 голосов
/ 19 апреля 2020

Настройка ACL через Get / Set-ACL и icacls - это довольно распространенная вещь, о которой рассказывается во многих ресурсах. Пример (ы):

Настройка ACL для папки или файла с помощью PowerShell

Этот сценарий задает права доступа к папке (c: \ 1 и C: 2) и его подпапку. Если папка не существует, она создаст папку, установит ее как общую и добавит группы в папку. Имя_группы следует заменить на Фактическую группу.

Идентификаторы пула приложений

Настройка разрешений для ASP. NET приложения в IIS с PowerShell

Согласно этим вопросам и ответам StackOverflow

Как добавить разрешения ACL для учетных записей IIS APPPOOL * через Powershell?

Set-Acl $directory $acl $user = New-Object
System.Security.Principal.NTAccount("$domain\\$username")

ОБНОВЛЕНИЕ: похоже, что он не примет «IIS APPPOOL \ AppPoolName» в качестве идентификатора NTAccount. Теперь есть два способа выполнить sh то, что вы пытаетесь сделать:

Создать новый объект SID с идентификатором безопасности AppPoolIdentities и преобразовать его в NTAccount, например: http://iformattable.blogspot.com/2007/12/convert-sid-to-ntaccount-with.html, и вы должны иметь возможность рассматривать его как любой другой объект NTAccount. Если вы все еще хотите иметь возможность передавать доменные имена / имена пользователей для реальных учетных записей, встроенный в простой лог c, который по умолчанию равен SID AppPool, если имя пользователя - «AweSomeAppPool» и домен пуст, просто в качестве примера.

Используйте PowerShell для вызова icacls.exe и используйте его для предоставления / отзыва любых разрешений, которые вы хотите, например, (сначала обычная командная строка формы icacls, затем powershell, обратите внимание на разницу):

icacls.exe test.txt /grant "IIS AppPool\DefaultAppPool":(OI)(CI)M
cmd /c icacls test.txt /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M"
...