Aqui está um problema com o IIS 7.5 e o ASP.NET que eu tenho pesquisado e chegado a lugar nenhum. Qualquer ajuda seria muito apreciada.
Minha pergunta é: usando o ASP.NET no IIS 7.5, como o IIS e / ou o sistema operacional permitem que o aplicativo Web grave em uma pasta como C:\dump
quando executado sob confiança total? Como é que não preciso adicionar explicitamente o acesso de gravação para o usuário do pool de aplicativos (neste caso ApplicationPoolIdentity
)?
Isso eu sei:
- No IIS 7.5, a identidade padrão para um pool de aplicativos é
ApplicationPoolIdentity
. ApplicationPoolIdentity
representa uma conta de usuário do Windows chamada "IIS APPPOOL \ AppPoolName", criada quando o Pool de Aplicativos é criado, em que AppPoolName é o nome do Pool de Aplicativos.- O usuário "IIS APPPOOL \ AppPoolName" é por padrão um membro do
IIS_IUSRS
grupo. - Se você estiver executando sob Full Trust, sua aplicação web pode escrever para muitas áreas do sistema de arquivos (excluindo pastas como
C:\Users
,C:\Windows
, etc). Por exemplo, seu aplicativo terá acesso para gravar em algumas pastas, comoC:\dump
,. - Por padrão, o
IIS_IUSRS
grupo não recebe acesso de leitura ou gravaçãoC:\dump
(pelo menos, o acesso visível na guia "Segurança" no Windows Explorer). - Se você negar o acesso de gravação
IIS_IUSRS
, receberá uma SecurityException ao tentar gravar na pasta (conforme o esperado).
Portanto, levando tudo isso em consideração, como o acesso de gravação é concedido ao usuário "IIS APPPOOL \ AppPoolName"? O processo w3wp.exe é executado como esse usuário. Portanto, o que permite que esse usuário grave em uma pasta à qual parece não ter acesso explícito?
Observe que eu entendo que isso provavelmente foi feito por uma questão de conveniência, pois seria difícil conceder ao usuário acesso a todas as pastas em que ele precisa gravar se você estiver executando no Full Trust. Se você deseja limitar esse acesso, sempre pode executar o aplicativo em Média Confiança. Estou interessado em descobrir como o sistema operacional e / ou o IIS permitem que essas gravações ocorram, mesmo que pareça não haver acesso explícito ao sistema de arquivos concedido.
Clique com o botão direito na pasta.
Clique em Propriedades
Clique na guia Segurança. Você verá algo assim:
Marque / desmarque qualquer acesso que você precise conceder à conta
Clique no botão Aplicar e depois em OK.
fonte
Cada pool de aplicativos no IIs cria sua própria pasta de usuário segura com permissão de leitura / gravação COMPLETA, por padrão, em c: \ users. Abra a pasta Usuários e veja quais pastas do pool de aplicativos estão lá, clique com o botão direito do mouse e verifique seus direitos para a conta virtual do pool de aplicativos atribuída. Você deve ver sua conta do pool de aplicativos já adicionada com acesso de leitura / gravação atribuído a sua raiz e subpastas.
Portanto, esse tipo de acesso ao armazenamento de arquivos é feito automaticamente e você deve poder escrever o que quiser nas pastas de contas de usuário dos pools de aplicativos sem alterar nada. É por isso que as contas de usuário virtual para cada pool de aplicativos foram criadas.
fonte
Tentei isso para corrigir problemas de acesso a um site do IIS, que se manifestava da seguinte maneira em Logs de Eventos → Windows → Aplicativo:
No final, tive que dar ao
Everyone
grupo do Windows acesso de leitura a essa pasta para fazê-la funcionar corretamente.fonte