Я хочу иметь возможность настроить учетную запись IIS для новых веб-сайтов, чтобы иметь разрешения на изменение. У меня есть следующий скрипт:
function Set-ModifyPermission ($directory, $username, $domain = 'IIS APPPOOL') {
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"
$acl = Get-Acl $directory
$user = New-Object System.Security.Principal.NTAccount($domain, $username )
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule($user, "Modify", $inherit, $propagation, "Allow")
$acl.AddAccessRule($accessrule)
set-acl -aclobject $acl $directory
}
Однако, когда я запускаю его, я получаю такие ошибки:
Set-Acl: не удалось установить доверительные отношения между этой рабочей станцией и основным доменом.
Я думаю, это потому, что IIS APPPOOL
это не настоящий домен, а странный префикс для своего рода фальшивого аккаунта. Есть ли правильный способ обратиться к этой учетной записи, чтобы я мог сделать эту работу?
AddAccessRule
: «Некоторые или все идентификационные ссылки не могут быть переведены». Есть идеи, что это может быть?icacls
отлично поработать, спасибо за помощь! Я закончил с тем, что тело функции (те же параметры, что и выше) былоcmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(/t
чтобы рекурсивно работать с каталогом,/c
продолжать работать после любых ошибок и/q
подавлять сообщения об успехе для каждого файла).Нечто подобное должно помочь вам. Это должно быть в состоянии разрешить IIS APPPOOl \ Anything также ...
источник
SetAccessRule
: «Некоторые или все ссылки на идентификаторы не могут быть переведены».Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
хотя при повторной попытке я получаю другую ошибку: «Не удалось установить доверительные отношения между этой рабочей станцией и основным доменом».Следующее работает в Windows 2012, чтобы получить SID для сайта IIS. Для этого требуется поставщик IIS, который использует модуль PowerShell WebAdministration, но в этой статье указывается, что он будет работать в Windows 2008R2.
источник
AddAccessRule
» с аргументом «1»: «Некоторые или все ссылки на идентификаторы не могут быть переведены.»NTAccount
.Import-Module WebAdministration
чтобы получить диск IIS от поставщика IIS.Начиная с IIS 10 / Windows 10 / Server 2016 модуль WebAdministration устарел, и вместо него ожидается использование нового модуля IISAdministration Powershell. Вот как можно перевести SID пула приложений для виртуального пользователя с помощью нового модуля:
источник
Следующее работает для меня в Windows 2012, не может заставить другие примеры работать:
источник
$acl.SetAccessRuleProtection($True, $False)
как последний параметр здесь - PreserveInheritance. Спасибо за публикацию этого!