Por que quando eu adiciono o acesso IIS_IUSRS RW a uma pasta, ele não permite automaticamente o acesso ISUR RW?

10

Estou usando o IIS7 (Windows Server 2008 x64) e tenho uma configuração de site usando autenticação anônima. A identidade do usuário anon é configurada como IUSR. O aplicativo grava arquivos em uma pasta e estou dando as permissões RW do grupo IIS_IUSRS para a pasta. Isso não funciona. Devo fornecer explicitamente IMSR RW perms para permitir que o aplicativo grave na pasta.

Entendo que a identidade do pool de aplicativos é automaticamente adicionada ao grupo IIS_IUSRS. Eu assumi que IUSR (ou qualquer identidade de usuário anônimo) também era um membro implícito do grupo IIS_IUSRS também. Não parece que este seja o caso.

Durante a solução de problemas, uso o Process Monitor para exibir o acesso à pasta e determinei que o Serviço de Rede (a identidade do pool de aplicativos) estava representando IUSR (era o que eu esperava), mas dando permissões RW ao grupo IIS_IUSRS para acessar o arquivo (acesso negado).

Alguém pode explicar se IUSR é ou não é um membro do grupo IIS_IUSRS?

Analisei a documentação a seguir e não encontrei uma resposta sólida:

Entendendo o Built-In Contas de usuários e grupos no IIS 7

Identidades do pool de aplicativos

    
por Izzy 09.09.2010 / 20:04

1 resposta

13

Isso é porque essas são duas coisas diferentes. IIS_IUSRS é o grupo para Contas de processo de trabalho do IIS . Isso significa a identidade na qual o pool de aplicativos é executado. IUSR é a identidade do usuário anônimo. Isso significa a identidade que o IIS acredita ser o usuário que está acessando o site.

Agora, mesmo que você não tenha dito, deixe-me adivinhar - este aplicativo é clássico asp? (Caso contrário, se for .Net, então você deve estar usando a representação). De qualquer forma, o que acontece é que os recursos são acessados como a identidade representada, ou seja, o usuário anônimo no seu caso, ou seja, IUSR. É por isso que você tem que conceder os direitos. Em .Net, se você desativar a representação, verá que IIS_IUSRS entrará em ação como esperado. No ASP Clássico (e para arquivos estáticos), você não tem escolha, a representação é sempre "ativada"; Portanto, é sempre a identidade do usuário que é usada, não a identidade do pool. Então, como IIS_IUSRS é para identidades de pool, não está em jogo.

Editar após o OP adicionou mais informações:

É fácil confundir IUSR e IIS_IUSRS por causa de seus nomes. Maneira de ver que eles são diferentes é lembrar que o IIS_IUSRS é um substituto para o IIS_WPG no IIS6, que era o Grupo de Processos do Trabalhador. Para esses grupos, você adiciona contas nas quais deseja executar seus pools, não identidades anônimas, e os privilégios anon devem ser mais limitados. por exemplo. às vezes, você pode querer usar uma conta de domínio para executar o pool para a delegação do Kerberos a outros recursos da rede. Em seguida, você adicionaria essa conta de serviço a esse grupo.

Quando a representação é ativada, o pool / processo finge ser o usuário porque foi instruído a. No caso de anon auth (seu caso), esse usuário é IUSR. No caso de janelas auth, seria a identidade do windows \ domain do usuário. É também por isso que você obtém um impacto no desempenho com a representação, porque o processo precisa mudar para uma identidade diferente para o acesso a recursos.

Se você estiver usando a autenticação .NET e anônima, não vejo por que ativar a representação. Caso você não esteja usando ou não precise de representação, você deve estar ciente de mais alguns truques no caso do IIS7: você pode fazer com que sua IUSR desapareça completamente e acabe com toda a confusão. Eu acho que você gostaria disso, e é o meu método preferido também. Tudo o que você precisa fazer é dizer para reutilizar a identidade do pool como a identidade anônima .

Então, depois disso, você só terá que lidar com o grupo IIS_IUSRS. Mas não se confunda, isso ainda não significa que esses dois são os mesmos! Pode ser possível que a identidade do processo substitua a IUSR, mas não o contrário!

Mais alguns truques do IIS7: se você olhar para IIS_IUSRS, pode estar vazio. Isso porque suas identidades de pool virtual são adicionadas automaticamente quando o pool é iniciado, então você não precisa se preocupar com essas coisas.

Esta tabela deve ajudar a esclarecer melhor como a identidade da execução do thread é determinada:


Impersonation  Anonymous Access   Resources Accessed As

Enabled          Enabled           IUSR_computer in IIS5/6 or,
                                       IUSR in IIS7 or,
                                       If you changed the anon user account 
                                       in IIS,  whatever you set there
Enabled          Disabled          MYDOM\MyName
Disabled         Enabled           NT Authority\Network Service (pool identity)
Disabled         Disabled          NT Authority\Network Service (pool identity)

    
por 26.09.2010 / 12:42

Tags