O acesso de gravação a todos os trabalhos, IUSR, IIS_IUSRS, DefaultAppPool, não funciona. porque?

9

Ok. Aqui estamos tentando configurar um site do Classic ASP no IIS 7.5 no Windows Server 2008 R2. Existe uma pasta chamada dbc na raiz do site e tem um arquivo que é usado para ler e gravar certas informações enquanto todas as páginas são processadas.

O problema é que, se eu conceder permissões de gravação IUSR e permissões de gravação IIS_IUSRS, ou Permissões de gravação DefaultAppPool, recebo a "Acesso ao caminho 'E: .. \ websiteroot \ dbc \ filename.txt' foi negado"

Mas se eu conceder acesso a TODOS o Write nessa pasta do dbc, não obtenho nenhum erro, tudo parece perfeito.

Mais informações: O site é executado no modo Classic Pipeline, a autenticação anônima é habilitada (talvez seja a única autenticação habilitada) .. E eu tentei autenticação anônima usando a conta IUSR, bem como, identidade do pool de aplicativos. No meu caso, ApplicationPoolIdentity é a identidade da autenticação do site. Nós usamos um COM + para arquivo I / O. E clássico ASP Server.CreateObject para instanciar um objeto fora dele. O COM + é executado como um serviço de rede.

Pensamentos? Eu não quero conceder permissão de gravação para todos. Estou faltando alguma coisa?

SOLVED: Here's what I did.

My website named CipherDemo was running under an AppPoolIdentity in IIS 7.5, that could be located by the Identity IIS AppPool\CipherDemo. I used ICACLS to give RW permissions on that folder.

and the COM+ that was actually doing the file I/O was running under the Network Service Identity. When I was using Process Monitor to trace the Access Denied Error, it turned that Network Service has only a Read permission on that folder.

I used ICACLS "foldername" /grant:r "NT AUTHORITY\NETWORKSERVICE":(OI)(CI)RXW /T to grant Write access on that folder.

And solved it.

I was on an intention that since the website runs as CipherDemo Identity, this will be the account that will be used to access the file via COM+. But it's embarrassing to find out that the COM+ would still work on it's own Identity boundaries.

    
por gmaran23 16.05.2011 / 08:21

3 respostas

4

No IIS 7.5 (e, opcionalmente, no IIS 7), todos os funcionários são executados com Identidade do Pool de Aplicativos: user "IIS AppPool * PoolName *".

Conceda acesso a esse usuário em vez de Todos (você precisará digitar o nome nos diálogos de identidade de seleção - ele não será exibido na função de localização).

Existe uma página muito útil em iis.net que abrange as coisas em muito mais detalhes.

Além disso, observe: no IIS7 (Server 2008):

  • Você define a identidade do pool de aplicativos por pool de aplicativos nas configurações avançadas.
  • Não há suporte a GUI, portanto, você precisará da linha de comando para definir permissões ( icacls.exe ).

Por fim, a seleção de identidade do SQL Server também não conhece a identidade do pool de aplicativos: use CREATE LOGIN e CREATE USER inicialmente, depois disso, a GUI pode ser usada para conceder funções, etc.

    
por 16.05.2011 / 08:46
5

Você pode adicionar a conta por meio da GUI do NTFS digitando-a diretamente. O nome está no formato de IIS APPPOOL\<<app pool name>> , por ex. %código%. (consulte este artigo de suporte da Microsoft )

Uma solução alternativa: estou usando a conta "Serviço de Rede" como usuário do pool de aplicativos que concede permissão de gravação.

    
por 16.05.2011 / 08:44
0

Se você deseja conceder a permissão WRITE da pasta apenas para o usuário específico, também deve alterar 'Identidade do usuário anônimo' do site para 'Usuário específico' e não 'Identidade do pool de aplicativos'.

    
por 18.03.2013 / 08:43