Quero poder definir a conta do IIS para novos sites com permissões de modificação. Eu tenho o seguinte script:
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
}
No entanto, quando eu o executo, obtenho erros como este:
Set-Acl: a relação de confiança entre esta estação de trabalho e o domínio principal falhou.
Eu acho que isso ocorre porque IIS APPPOOL
não é um domínio real, mas é um prefixo estranho em uma conta meio falsa. Existe uma maneira correta de me referir a essa conta para que eu possa fazer isso funcionar?
AddAccessRule
: "Algumas ou todas as referências de identidade não puderam ser traduzidas". Alguma idéia do que possa ser?icacls
trabalhar muito bem para mim, obrigado pela ajuda! Acabei com o corpo da função (mesmos parâmetros acima) sendocmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(com/t
a trabalhar recursivamente no diretório,/c
continuar após quaisquer erros e/q
suprimir mensagens de sucesso para cada arquivo).Algo assim deve fazer o truque para você. Ele deve ser capaz de resolver o IIS APPPOOl \ Anything também ...
fonte
SetAccessRule
: "Algumas ou todas as referências de identidade não puderam ser traduzidas".Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
, embora ao tentar novamente, recebo um erro diferente: "O relacionamento de confiança entre esta estação de trabalho e o domínio principal falhou".O seguinte funciona no Windows 2012 para obter um SID para o site do IIS. Requer o provedor IIS que usa o módulo PowerShell WebAdministration, mas este artigo indica que funcionará no Windows 2008R2.
fonte
AddAccessRule
' com '1' argumento (s): 'Algumas ou todas as referências de identidade não puderam ser traduzidas.'"NTAccount
trabalho real .Import-Module WebAdministration
para obter a unidade IIS do provedor IIS.No IIS 10 / Windows 10 / Server 2016, o módulo WebAdministration está obsoleto e espera-se que você use o novo módulo IISAdministration Powershell. Veja como obter o SID do pool de aplicativos convertido para o usuário virtual usando o novo módulo:
fonte
O seguinte funcionou para mim no Windows 2012, não conseguiu os outros exemplos funcionando:
fonte
$acl.SetAccessRuleProtection($True, $False)
pois o último parâmetro aqui é PreserveInheritance. Obrigado por postar isso!