Acabei de me mudar do IIS6 no Win2003 para o IIS8 no Win2012 para hospedar aplicativos ASP.NET.
Dentro de uma pasta específica do meu aplicativo, preciso criar e excluir arquivos. Depois de copiar os arquivos para o novo servidor, continuei vendo os seguintes erros ao tentar excluir os arquivos:
O acesso ao caminho 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' foi negado.
Ao verificar o IIS, vejo que o aplicativo está sendo executado na conta DefaultAppPool, no entanto, nunca configurei permissões do Windows nesta pasta para incluir o IIS AppPool \ DefaultAppPool
Em vez disso, para parar de gritar clientes, concedi as seguintes permissões na pasta:
IUSR
- Leitura e execução
- Listar conteúdo da pasta
- Ler
- Escrever
IIS_IUSRS
- Modificar
- Leitura e execução
- Listar conteúdo da pasta
- Ler
- Escrever
Isso parece ter funcionado, mas estou preocupado que muitos privilégios tenham sido definidos. Li online informações conflitantes sobre se o IUSR é realmente necessário aqui. Alguém pode esclarecer quais usuários / permissões seriam suficientes para criar e excluir documentos nesta pasta, por favor? Além disso, o IUSR faz parte do grupo IIS_IUSRS?
Atualização e solução
Por favor, veja minha resposta abaixo . Eu tive que fazer isso com tristeza, pois algumas sugestões recentes não foram bem pensadas ou até seguras (IMO).
Respostas:
Eu odeio postar minha própria resposta, mas algumas respostas recentemente ignoraram a solução que eu postei em minha própria pergunta, sugerindo abordagens que são nada menos do que imprudentes.
Em resumo - você não precisa editar nenhum privilégio de conta de usuário do Windows . Fazer isso apenas apresenta riscos. O processo é totalmente gerenciado no IIS usando privilégios herdados.
Aplicando permissões de modificação / gravação à conta de usuário correta
Clique com o botão direito do mouse no domínio quando ele aparecer na lista Sites e escolha Editar permissões.
Na guia Segurança , você verá
MACHINE_NAME\IIS_IUSRS
uma lista. Isso significa que o IIS automaticamente tem permissão somente leitura no diretório (por exemplo, para executar o ASP.Net no site). Você não precisa editar esta entrada .Clique no botão Editar e, em seguida, Adicionar ...
Na caixa de texto, digite
IIS AppPool\MyApplicationPoolName
, substituindoMyApplicationPoolName
pelo seu nome de domínio ou qualquer pool de aplicativos que esteja acessando seu site, por exemplo,IIS AppPool\mydomain.com
Pressione o botão Verificar nomes . O texto digitado será transformado (observe o sublinhado):
Pressione OK para adicionar o usuário
Com o novo usuário (seu domínio) selecionado, agora você pode fornecer com segurança quaisquer permissões de modificação ou gravação
fonte
IUSR
obras. AdicionandoIIS AppPool\Cache
(o nome do meu pool de aplicativos) produzHTTP Error 401.3 - Unauthorized
MyComputerName\IIS_IUSRS
eIUSR
com permissões somente leitura para que funcionasse novamente. Isso é apenas para diretórios virtuais (não para aplicativos .net), mas imagine que alguém possa achar útil.IIS AppPool\[APPLICATION POOL NAME]
. Espaços em branco no nome do Pool de aplicativos são aceitos. Observe também que esse usuário será encontrado apenas se "Princípios de segurança internos" estiver marcado como um tipo de objeto para a pesquisa de nomes (campo superior na caixa de diálogo "Selecionar usuários ou grupos").IUSR faz parte do IIS_IUSER group.so eu acho que você pode remover as permissões para IUSR sem se preocupar. Leitura adicional
No entanto, um problema surgiu com o tempo, à medida que mais e mais serviços do sistema Windows começaram a ser executados como NETWORKSERVICE. Isso ocorre porque os serviços executados como NETWORKSERVICE podem violar outros serviços executados com a mesma identidade. Como os processos de trabalho do IIS executam código de terceiros por padrão (código ASP clássico, ASP.NET, PHP), era hora de isolar os processos de trabalho do IIS de outros serviços do sistema Windows e executar os processos de trabalho do IIS sob identidades exclusivas. O sistema operacional Windows fornece um recurso chamado "Contas virtuais" que permite ao IIS criar identidades exclusivas para cada um de seus pools de aplicativos. DefaultAppPool é o pool por padrão atribuído a todos os pools de aplicativos criados por você.
Para torná-lo mais seguro, você pode alterar a identidade do IIS DefaultAppPool para ApplicationPoolIdentity.
Em relação à permissão, Criar e Excluir resume todos os direitos que podem ser concedidos. Portanto, o que você atribuiu ao grupo IIS_USERS é que eles exigirão. Nada mais nada menos.
espero que isto ajude.
fonte
Quando adicionei a permissão IIS_IUSRS à pasta do site - recursos, como js e css, ainda estavam inacessíveis (erro 401, proibido). No entanto, quando eu adicionei IUSR - ficou ok. Então, com certeza "você NÃO PODE remover as permissões do IUSR sem se preocupar", querido @Travis G @
fonte
IIS AppPool\MyApplicationPoolName
conforme minha resposta atualizada. Você não precisa mais mexer com IUSR (S)!@EvilDr Você pode criar uma conta IUSR_ [identifier] no seu ambiente do AD e permitir que o pool de aplicativos específico seja executado sob essa conta IUSR_ [identifier]:
"Pool de aplicativos"> "Configurações avançadas"> "Identidade"> "Conta personalizada"
Defina seu site como "Usuário do aplicativo (autenticação de passagem)" e não "Usuário específico", nas Configurações avançadas.
Agora forneça a esse IUSR_ [identificador] as permissões NTFS apropriadas em arquivos e pastas, por exemplo: modifique nos dados da empresa.
fonte
O grupo IIS_IUSRS terá destaque apenas se você estiver usando o ApplicationPool Identity. Embora esse grupo pareça vazio no tempo de execução, o IIS adiciona a esse grupo para executar um processo de trabalho, de acordo com a literatura da Microsoft.
fonte
Eu usaria usuário específico (e NÃO usuário de aplicativo). Então, habilitarei a representação no aplicativo. Depois de fazer isso, qualquer que seja a conta definida como usuário específico, essas credenciais serão usadas para acessar recursos locais nesse servidor (não para recursos externos).
A configuração específica do usuário é destinada especificamente para acessar recursos locais.
fonte