Resolvendo problemas de permissões de usuários no IIS

Descrição

Neste artigo iremos abordar como resolver problemas de permissão de gravação em diretórios de aplicações web rodando em Servidor IIS (durante upload de arquivos).

Pre-requisitos

Servidor IIS – local ou integrado com domínio e com suporte a paginas ASP

Projeto – ASP file upload
http://www.motobit.com/dlldownload/ScptUtl/ScptUtl-eval-2-3-1-x64.exe

Instalação

Instale o servidor windows 2003 X64

Instale o servidor de aplicação via Application Server through Control Panel > Add or Remove Programs > Add/Remove Windows Componentes

Habilite Active Server Pages no World Wide Web Service e pressione OK

Navegue no diretório c:\inetpub\wwwroot\ e crie a pasta root para o seu servidor web de testes (c:\inetpub\wwwroot\siteroot\) depois crie o diretório para uploads de arquivos dentro da pasta root

Instale o projeto ASP file upload executando-o em c:\temp\ ScptUtl-eval-2-3-1-x64

Crie um arquivo asp básico para testes em c:\inetpub\wwwroot\siteroot\

—INICIO DO CODIGO—

<%

Dim Form: Set Form = CreateObject(“ScriptUtils.ASPForm”)

If Form.State = 0 Then

Form.Files.Save “c:\inetpub\wwwroot\siteroot\uploads”

Description = Form(“Description”) ‘Do something with <input name=description>

Else

‘Handle other form states, errors.

End If

%>

<Body>

<form method=”post” ENCTYPE=”multipart/form-data”>

<input type=”submit” value=”Upload the files >>”><br>

File 1 : <input type=”file” name=”File1″><br>

File 2 : <input type=”file” name=”File2″><br>

Description : <input name=”Description”>

</form>

</body>

—FIM DO CODIGO—

clip_image001

clip_image003

clip_image004

clip_image005

clip_image006

clip_image007

clip_image008

clip_image010

Acesse o IIS e configure um site padrao para este teste

clip_image012

Clique em New > Web Site , para adicionar um novo site.

clip_image013

Digite um nome para para este site

clip_image014

Configure parâmetros para “endereço ip pelo qual o site irá responder assim como nome de cabeçalho do site “host header”.

clip_image015

Configure o caminho físico onde irão ficar os arquivos do site.

clip_image016

clip_image017

clip_image018

Configure permissões de Read e Run Scripts para este site.

clip_image019

clip_image020

Navegue em properties e Documents no novo site e configure o arquivo upload.asp como a pagina padrão deste site.

clip_image021

clip_image022

clip_image023

clip_image025

Teste 1 – carregue o site padrão de teste e tente enviar 02 arquivos para este servidor

Você recebera a seguinte mensagem de erro

“access denied” = “acesso negado”

Adicione as permissões de escrita “WRITE ACCESS” para o grupo “everyone” / “todos”

clip_image027

clip_image029

Nas telas acima voce pode visualizar o processo w3wp.exe (referente ao IIS) tentando criar o arquivo “abc.txt” e teve como resposta acesso negado HANDSON\IUSR_DC1 (o usuário local que o IIS usa para executar o site padrão de testes)

Você encontrará o seguinte erro via Proccess Monitor

clip_image031

Clique duas vezes sobre a linha que deseja verificar mais informações sobre.

clip_image032

Veja que o log é mais detalhado

Verifique as permissões NTFS no diretório de uploads

clip_image034

Verifique que o usuário HANDSON\IUSR_DC1 possui permissões especiais mas não as permissões para modificar neste mesmo diretório.

É melhor utilizar um usuário especifico para cada aplicação que for ser hospedada neste servidor.

Crie um usuário (domain user) conforme este exemplo e dê a ele permissões neste web site via IIS e também ao diretório onde estarão os arquivos desta aplicação (principalmente para o diretório upload “change”.

clip_image035

clip_image037

clip_image039

clip_image041


 

Teste 2 – Carregue o site novamente e faça o upload de 2 arquivos para este servidor apos fazer as alterações necessárias.

Você perceberá que o resultado será diferente do teste anterior.

Resultado – “SUCCESS” , SUCESSO

clip_image043

clip_image045

clip_image047

clip_image049

clip_image051

Veja que os 2 arquivos foram criados no diretório “uploads” desta aplicação web.

clip_image053

Verifique também via process monitor que o arquivo foi criado com sucesso para o usuário que roda a aplicação (foco deste artigo).

clip_image055

clip_image057

Resolvendo problemas

1. Utilize das ferramentas sysinternals http://technet.microsoft.com/en-us/sysinternals/bb842062

2. filemon.exe foi retirado e substituído pelo process monitor procmon.exe

3. utilize como campo pesquisa o nome do processo, visto em taskmgr.exe “w3wp.exe” quando for fazer resolução de problemas para IIS

Melhores praticas

1. Para cada aplicação criada ou executada neste servidor (web) crie um usuário (local no servidor ou de domínio)

2. Configure este usuário como o usuário que irá executar/rodar a aplicação “authentication methods” na aba de segurança do IIS “ IIS Directory Security”

3. Permita que este usuário tenha acesso NFTS no diretório da aplicação quando necessário (para gravar arquivos/enviar arquivos)

a. Quando utilizar o mesmo diretório para aplicação web e também para serviço FTP publicado lembre-se de utilizar um grupo dedicado para simplificar a administração.

Links

Sysinternals http://technet.microsoft.com/en-us/sysinternals/bb842062

Projeto ASP file upload
http://www.motobit.com/dlldownload/ScptUtl/ScptUtl-eval-2-3-1-x64.exe

Servidor IIS – www.iis.net