No IIS 7 no Windows Server 2008, os pools de aplicativos podem ser executados como a conta "ApplicationPoolIdentity" em vez da conta NetworkService.
Como atribuo permissões a esta conta "ApplicationPoolIdentity". Ele não aparece como um usuário local na máquina. Ele não aparece como um grupo em nenhum lugar. Nada remotamente parecido com isso aparece em qualquer lugar. Quando procuro usuários locais, grupos e contas internas, ele não aparece na lista, nem nada semelhante aparece na lista. O que está acontecendo?
Não sou o único com esse problema: consulte Problemas com ApplicationPoolIdentity no IIS 7.5 + Windows 7 para obter um exemplo.
"Infelizmente, essa é uma limitação do seletor de objetos no Windows Server 2008/Windows Vista - como várias pessoas já descobriram, você ainda pode manipular a ACL para a identidade do pool de aplicativos usando ferramentas de linha de comando como icacls ."
Atualização: A pergunta original era para o Windows Server 2008, mas a solução é mais fácil para o Windows Server 2008 R2 e Windows Server 2012 (e Windows 7 e 8). Você pode adicionar o usuário por meio da interface do usuário do NTFS digitando-o diretamente. O nome está no formato IIS APPPOOL\{app pool name}. Por exemplo: IIS APPPOOL\DefaultAppPool.
Nota: De acordo com os comentários abaixo, há duas coisas a serem observadas:
Referência ao artigo do Microsoft Docs: Identidades do pool de aplicativos > Protegendo recursos
Resposta original: (para Windows Server 2008) Esse é um ótimo recurso, mas, como você mencionou, ainda não foi totalmente implementado. Você pode adicionar a identidade do pool de aplicativos no prompt de comando com algo como icacls e gerenciá-lo na GUI. Por exemplo, execute algo assim no prompt de comando:
Em seguida, no Windows Explorer, vá para a pasta wwwroot e edite as permissões de segurança. Você verá o que parece ser um grupo (o ícone do grupo) chamado DefaultAppPool. Agora você pode editar as permissões.
No entanto, você não precisa usar isso. É um bônus que você pode usar se quiser. Você pode usar a maneira antiga de criar um usuário personalizado por pool de aplicativos e atribuir o usuário personalizado ao disco. Isso tem suporte completo à interface do usuário.
Esse método de injeção de SID é bom porque permite que você use um único usuário, mas isole totalmente cada site um do outro sem precisar criar usuários exclusivos para cada pool de aplicativos. Bastante impressionante, e será ainda melhor com suporte à interface do usuário.
Observação: se você não conseguir encontrar o usuário do pool de aplicativos, verifique se o serviço do Windows chamado Application Host Helper Service está em execução. É o serviço que mapeia os usuários do pool de aplicativos para contas do Windows.
Você precisa ter certeza de que o
From this location
campo está definido para olocal machine
e não para o domínio.Eu tive o mesmo problema e uma vez que eu mudei que funcionou bem.
Você deve realmente criar grupos por "função" e atribuir a esse grupo acessos no sistema de arquivos. Em seguida, adicione o pool de aplicativos aos grupos específicos de função conforme necessário. Dessa forma, mesmo que você remova o pool de aplicativos mais tarde (e o usuário virtual faça poof ), você não precisa se preocupar em refazer todas as permissões, basta adicionar o pool de aplicativos de substituição ao grupo existente.
Depois de ler @Scott Forsyth - resposta do MVP, tentei reiniciar o Application Host Helper Service. Isso resolveu o problema para mim.
Eu estava executando o WS8 R2 e não consegui adicionar
IIS APPPOOL\DefaultAppPool
via Windows Explorer. A única maneira de funcionar foi via linha de comando:Se esta pergunta é sobre como executar _sp_send_dbmail no banco de dados msdb (usando o procedimento armazenado SQL send Database Mail no msdb), aqui estão algumas soluções. Adicione o nome de usuário do aplicativo .net de seu banco de dados (que é definido em sua string de conexão em seu aplicativo .net) ao usuário msdb com associação de função "DatabaseMailUserRole"